2013-08-28 11 views
5

戻るボタンを押したときにonPause()を呼び出すアプリを作成しました。以下の方法として戻るボタンをクリックしてアプリを最小化するandroid

..

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); 
    } 

私はonBackPress()である... [戻る]ボタンをクリックしたときに同じことをやりたいです。私はonBackPress()メソッドの中でonPause()メソッドを呼び出します。

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) 

が私を助けてくださいできるだけ早く

+0

あなたは)(のonCreateに受信機を登録していますか? –

+0

実際にonPause()を手動で呼び出せますか? –

+0

できません。それは例外が実際に言っていることです –

答えて

3

まず、onBackPressed()を完全に削除します。次に、次のコードをonKeyDown()に挿入してみます。 (あなたはただ、次のコードを過ぎてコピーします。すでにこのような方法を持っていない場合)

public boolean onKeyDown(int keyCode, KeyEvent event) { 

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

    // your other related codes 
} 
0

あなたの誤差がライン"onBackPressed(MainActivity.java:866)"上で次のように

それから私はエラーを得ました。それに行くためにCtrl+Lを使用し、866また

あなたのエラーがjava.lang.IllegalArgumentException: Receiver not registered: "はそう、あなたのいずれかが登録されていない、あまりにも早く、あなたのリスナーを持っているか、正しくリスナーを設定していない」である行でコードonBackpressed()を提供してください。

をしてくださいエラーログをページ分割してみてくださいあなたがそれを貼り付けるとき、私は個人的にやるthis

編集:おかげで、あなたのためのコード:) &を注ぐ@RiteshGune編集を持つように@trinimon avoiréditerルミエン:D

0

慎重にエラーログを読んで、ここで例外の原因がありますしてください:

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) 

ので、根本的な原因は、あなたのMainActivity.javaファイルの行567にあり、(UIStateManager.getInsatance()受信機がすでに登録解除されているようですあなたのコードのどこかに)。

ここには、same problemに対応する投稿があります。

関連する問題