2017-03-02 2 views
-1

zu stoppen Ich arbeite an android studio. Während das Gerät in Portrait Modus ist es funktioniert perfekt, aber wenn ich mein Bildschirm landscape Modus drehen dann stürzt die App, solange er unterhalb Fehler gebenNicht in der Lage, die Aktivität in Android

java.lang.RuntimeException: Unable to stop activity {com.example.accurat.myapp/com.example.accurat.myapp.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.common.api.GoogleApiClient.disconnect()' on a null object reference 
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3845) 
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3899) 
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4103) 
at android.app.ActivityThread.-wrap15(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1369) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5491) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.common.api.GoogleApiClient.disconnect()' on a null object reference 
at com.example.accurat.myapp.MainActivity.onStop(MainActivity.java:249) 
at android.app.Instrumentation.callActivityOnStop(Instrumentation.java:1301) 
at android.app.Activity.performStop(Activity.java:6414) 
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3840) 
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3899)  
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4103)  
at android.app.ActivityThread.-wrap15(ActivityThread.java)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1369)  
at android.os.Handler.dispatchMessage(Handler.java:102)  
at android.os.Looper.loop(Looper.java:148)  
at android.app.ActivityThread.main(ActivityThread.java:5491)  
at java.lang.reflect.Method.invoke(Native Method)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 

und es trifft auf den Code unten Teil

protected void onStop() { 
    super.onStop(); 
    mGoogleApiClient.disconnect(); // it hit here 

} 

Die folgende Methode wird aufgerufen, während die Koordinaten abgerufen werden.

protected synchronized void buildGoogleApiClient() { 

    mGoogleApiClient = new GoogleApiClient.Builder(getBaseContext()) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .addApi(LocationServices.API) 
      .build(); 
    if(mGoogleApiClient != null) { 
     mGoogleApiClient.connect(); 
    } 
} 

Jede Hilfe würde sehr geschätzt werden.

Antwort

3

Versuchen Sie, dies zu verwenden, das könnte Ihnen helfen !!

Halten Sie diese in der Manifest-Datei

<activity name= ".YourActivity" android:configChanges="orientation|screenSize"/> 
+0

Bingo funktioniert es dank bro – faisal1208

+0

Pleasure Bro !!! –

+0

Sie können den Landschaftsmodus dann nicht verwenden – MarcGV

0

sollten Sie rufen super.onStop() als letzte, was in Ihrer onStop() Umsetzung:

protected void onStop() { 
    mGoogleApiClient.disconnect(); 

    super.onStop(); 
} 
+0

noch – faisal1208

1

Ändern dieses

protected void onStop() { 
super.onStop(); 
mGoogleApiClient.disconnect(); // it hit here 

} 

dieser

protected void onStop() { 
mGoogleApiClient.disconnect(); // it hit here 
super.onStop(); 


} 
+0

Noch gleiches Problem gleiches Problem hat, wieder auf 'mGoogleApiClient.disconnect schlagen();' – faisal1208

0

Stehen Sie mit onConfigurationChange Methode, etwas zu tun?

dies tun, wenn Sie den Landscape-Modus vermeiden wollen:

<activity android:name=".MyActivity" 
      android:configChanges="orientation|keyboardHidden|screenSize" 
      android:label="@string/app_name"> 

Aus der Dokumentation

<activity android:name=".MyActivity" 
      android:configChanges="orientation|keyboardHidden" 
      android:label="@string/app_name"> 

Advertencia: A partir de Android 3.2 (el nivel de API 13) , "tamaño von pantalla" tambià © n cambia cuà ¼ dà ¼ nÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃà - Por lo tanto, si Deseas evitar los reinicios en tiempo de ejecución debido al cambio de orientación cuando desarrollas para el nivel de API 13 o niveles superiores (según se Declara en los atributos minSdkVersion y targetSdkVersion), Debes incluir el Tapferkeit " screenSize "además del valor" Orientierung ". Es decir, deklariert Deklarator android: configChanges = "orientation | screenSize". Sin embargo, si tu aplicación tiene como destino el nivel de API 12 o niveles superiores, tu actividad siempre maneja este cambio de Configuración por sí misma (este cambio de Configuración keine reinicia tu actividad, ni siquiera cuando se ejecuta en un dispositivo Android 3.2 o überlegen).

Normaler Gebrauch:

Erstellen Sie das Objekt Google api in onCreate()

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //... 
     mGoogleApiClient = new GoogleApiClient.Builder(getBaseContext()) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .addApi(LocationServices.API) 
      .build(); 
} 

Connect auf onStart()

@Override 
protected void onStart() { 
    mGoogleApiClient.connect(); 
    super.onStart(); 
} 

und trennen wie diese

@Override 
protected void onStop() { 
    mGoogleApiClient.disconnect(); 
    super.onStop(); 
} 
+0

kann dies nicht tun, wie ich bekommen müssen Koordinaten und auf Knopfdruck wird die API aufgerufen. Wenn ich die in 'onCreate' Methode auswähle, wird es automatisch 'lat' und' long' bekommen und das will ich nicht – faisal1208

+0

Und wenn du die App startest und zurückgehst, ohne auf die Schaltfläche zu klicken, passiert der Absturz nicht? Es scheint, der Code wird versuchen, den mGoogleApiClient zu trennen und dies wurde nicht initialisiert – MarcGV

+1

Ja, es stürzt ab, aber ich kann nicht einfach den Code aus der Schaltfläche klicken – faisal1208

2
@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
      // do nothing, just override 
} 


IN LAyout 

<activity 
     android:name=".SplashScreen" 
     android:configChanges="orientation|keyboardHidden|screenSize" ... /> 
Verwandte Themen