2013-08-28 13 views
5

Utworzyłem aplikację, która wywołuje onPause() po naciśnięciu przycisku Wstecz.Zminimalizuj aplikację po kliknięciu przycisku Wstecz Android

Jako następujący sposób ..

protected void onPause() { 
     // TODO Auto-generated method stub 
     super.onPause(); 

     // Notification show in status bar 

     NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
       this).setSmallIcon(R.drawable.icon).setContentTitle("TNLRadio") 
       .setContentText(""); 
     // Creates an explicit intent for an Activity in your app 
     // Intent resultIntent = new Intent(this, MainActivity.class); 
     Intent resultIntent = this.getIntent(); 

     TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); 
     // Adds the back stack for the Intent (but not the Intent itself) 
     stackBuilder.addParentStack(MainActivity.class); 
     // Adds the Intent that starts the Activity to the top of the stack 
     stackBuilder.addNextIntent(resultIntent); 
     PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, 
       PendingIntent.FLAG_UPDATE_CURRENT); 
     mBuilder.setContentIntent(resultPendingIntent); 
     NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     int mId = 0; 
     // mId allows you to update the notification later on. 
     mNotificationManager.notify(mId, mBuilder.build()); 

     this.unregisterReceiver(UIStateManager.getInsatance()); 
     // unregister call listener 
     UIStateManager.getInsatance().onPause(this); 
    } 

chcę robić te same rzeczy, gdy kliknij przycisk wstecz ... co jest w onBackPress(). Wywoływam metodę onPause() w metodzie .

Potem dostałem błąd w następujący sposób:

08-28 13:45:34.600: E/AndroidRuntime(14153): FATAL EXCEPTION: main 
08-28 13:45:34.600: E/AndroidRuntime(14153): java.lang.IllegalArgumentException: Receiver not registered: [email protected] 
08-28 13:45:34.600: E/AndroidRuntime(14153): at android.app.LoadedApk.forgetReceiverDispatcher(LoadedApk.java:628) 
08-28 13:45:34.600: E/AndroidRuntime(14153): at android.app.ContextImpl.unregisterReceiver(ContextImpl.java:1130) 
08-28 13:45:34.600: E/AndroidRuntime(14153): at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:354) 
08-28 13:45:34.600: E/AndroidRuntime(14153): at com.ironone.streaming.MainActivity.onPause(MainActivity.java:567) 
08-28 13:45:34.600: E/AndroidRuntime(14153): at com.ironone.streaming.MainActivity.onBackPressed(MainActivity.java:866) 
08-28 13:45:34.600: E/AndroidRuntime(14153): at android.app.Activity.onKeyUp(Activity.java:2099) 
08-28 13:45:34.600: E/AndroidRuntime(14153): at android.view.KeyEvent.dispatch(KeyEvent.java:2633) 
08-28 13:45:34.600: E/AndroidRuntime(14153): at android.app.Activity.dispatchKeyEvent(Activity.java:2329) 
08-28 13:45:34.600: E/AndroidRuntime(14153): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1957) 
08-28 13:45:34.600: E/AndroidRuntime(14153): at android.view.ViewRootImpl.deliverKeyEventPostIme(ViewRootImpl.java:3546) 
08-28 13:45:34.600: E/AndroidRuntime(14153): at android.view.ViewRootImpl.handleFinishedEvent(ViewRootImpl.java:3519) 
08-28 13:45:34.600: E/AndroidRuntime(14153): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2603) 
08-28 13:45:34.600: E/AndroidRuntime(14153): at android.os.Handler.dispatchMessage(Handler.java:99) 
08-28 13:45:34.600: E/AndroidRuntime(14153): at android.os.Looper.loop(Looper.java:137) 
08-28 13:45:34.600: E/AndroidRuntime(14153): at android.app.ActivityThread.main(ActivityThread.java:4507) 
08-28 13:45:34.600: E/AndroidRuntime(14153): at java.lang.reflect.Method.invokeNative(Native Method) 
08-28 13:45:34.600: E/AndroidRuntime(14153): at java.lang.reflect.Method.invoke(Method.java:511) 
08-28 13:45:34.600: E/AndroidRuntime(14153): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790) 
08-28 13:45:34.600: E/AndroidRuntime(14153): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 
08-28 13:45:34.600: E/AndroidRuntime(14153): at dalvik.system.NativeStart.main(Native Method) 

Proszę mi pomóc jak najszybciej

+0

czy zarejestrowany odbiornik w onCreate()? –

+0

czy naprawdę możesz wywołać metodę onPause() ręcznie? –

+0

nie, nie możesz. tak właśnie mówi ten wyjątek –

Odpowiedz

3

Najpierw całkowicie usuń onBackPressed(). Następnie spróbuj wstawić następujący kod do swojego onKeyDown() w następujący sposób. (jeśli nie mają już takiej metody. Wystarczy skopiować przeszłość poniższym kodzie)

public boolean onKeyDown(int keyCode, KeyEvent event) { 

    if(keyCode == KeyEvent.KEYCODE_BACK) 
    { 
      moveTaskToBack(true); 
      return true; 
    } 

    // your other related codes 
} 
0

Twój błąd jest na linii "onBackPressed(MainActivity.java:866)". Użyj Ctrl+L iść do niego i proszę podać kod onBackpressed() z linią 866.

Ponadto Twój błąd jest "java.lang.IllegalArgumentException: Receiver not registered: " więc trzeba albo niezarejestrowany zbyt wcześnie swoją słuchacza lub nie poprawnie skonfigurowany słuchacza.

proszę spróbuj paginate dzienniku błędów po wklejeniu go osobiście zrobić this

Edit. dzięki @trinimon mieć edytować kod dla ciebie :) & @RiteshGune wlać editer avoir le mien: D

0

Proszę uważnie przeczytać dziennik błędów, a oto przyczyna wyjątkiem:

08-28 13:45:34.600: E/AndroidRuntime(14153): at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:354) 
08-28 13:45:34.600: E/AndroidRuntime(14153): at com.ironone.streaming.MainActivity.onPause(MainActivity.java:567) 
08-28 13:45:34.600: E/AndroidRuntime(14153): at com.ironone.streaming.MainActivity.onBackPressed(MainActivity.java:866) 

Więc przyczyną leży na linii 567 w pliku MainActivity.java, wydaje się, że odbiornik UIStateManager.getInsatance() został już niezarejestrowany (gdzieś w swoim kodzie).

A oto wpis, który jest adresowany do same problem.

Powiązane problemy