1

Ich schreibe diesen Code und es zeigt den Fehler nicht statische Methode GoogleApiAvailability.isGooglePlayServicesAvailable (Kontext Kontext) und GoogleApiAvailability.getErrorDialog (Aktivität Aktivität, int errorCode, int requestCode) kann nicht von einem statischen Kontext aus referenziert werden.Nicht statische Methode isGooglePlayServicesAvailable und getErrorDialog kann nicht aus einem statischen Kontext referenziert werden

package com.xamarin.gcmexample; 
import android.app.Dialog; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import com.google.android.gms.common.ConnectionResult; 
import com.google.android.gms.common.api.GoogleApiClient; 
import com.google.android.gms.common.GoogleApiAvailability; 
import android.util.Log; 
import android.widget.TextView; 

public class Main extends AppCompatActivity { 
    TextView msgText; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     msgText = (TextView) findViewById(R.id.msgText); 

    } 
    protected void IsPlayServicesAvailable() 
    { 
     int resultCode = GoogleApiAvailability.isGooglePlayServicesAvailable(this); 
     if (resultCode == ConnectionResult.SUCCESS){ 
      msgText.setText("isGooglePlayServicesAvailable SUCCESS"); 

     }else{ 
      GoogleApiAvailability.getErrorDialog(this, resultCode, 1).show(); 
     } 
    } 

} 

Antwort

7

Nurlan hat bereits die richtige Antwort gezeigt.

Ersetzen Sie Ihre Methode

protected void IsPlayServicesAvailable() { 
    int resultCode = GoogleApiAvailability.isGooglePlayServicesAvailable(this); 

    if (resultCode == ConnectionResult.SUCCESS){ 
     msgText.setText("isGooglePlayServicesAvailable SUCCESS"); 
    } else { 
     GoogleApiAvailability.getErrorDialog(this, resultCode, 1).show(); 
    } 
} 

von

protected void IsPlayServicesAvailable() { 
    int resultCode = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(this); 

    if (resultCode == ConnectionResult.SUCCESS){ 
     msgText.setText("isGooglePlayServicesAvailable SUCCESS"); 
    } else { 
     GoogleApiAvailability.getInstance().getErrorDialog(this, resultCode, 1).show(); 
    } 
} 
1

durch googeln, diese link sagt: statischeisGooglePlayServicesAvailable(Context ctx), nicht statischisGooglePlayServicesAvailable(Contex ctx) verwenden ist veraltet. (Und es gibt public static GoogleApiAvailability getInstance() für Sie;))

+0

Wie könnte ich "public static GoogleApiAvailability getInstance()" im obigen Code verwenden? Könnten Sie bitte erklären. –

+0

@ManasMaity, Instanz von _GoogleApiAvailability_ abrufen und von Instanz verwenden ** nicht statisch isGooglePlayServicesAvailable (Contex ctx) ** 'GoogleApiAvailability instance = GoogleApiAvailability.getInstance(); int res = instance.isGooglePlayServicesAvailable (Contex ctx); ' – Nurlan

+0

danke für die Antwort. Es funktioniert gut –