5

onPause()戻るボタンが押されたときにを呼び出すアプリを作成しました。

次の方法として..

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()にある戻るボタンをクリックしたときに同じことをしたい...。onPause()メソッド内でメソッドを呼び出しますonBackPress()

次に、次のようなエラーが発生しました。

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: com.ironone.streaming.evt.UIStateManager@4153d788
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)

できるだけ早く助けてください

4

3 に答える 3

4

まず、を完全に取り外しますonBackPressed()。次に、次のコードを次のように挿入してみてくださいonKeyDown()。(そのようなメソッドをまだ持っていない場合。次のコードをコピーしてください)

public boolean onKeyDown(int keyCode, KeyEvent event) {

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

    // your other related codes
}
于 2013-08-28T09:25:13.717 に答える
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()受信者は既に (コードのどこかで) 登録解除されているようです。

そして、これは同じ問題に対処する投稿です。

于 2013-08-28T08:51:07.387 に答える
0

あなたのエラーは行にあり"onBackPressed(MainActivity.java:866)"ます。を使用してアクセスし、866 行目 Ctrl+Lのコードを入力してください。onBackpressed()

さらに、あなたのエラーは "java.lang.IllegalArgumentException: Receiver not registered: "なので、リスナーの登録が早すぎるか、リスナーを正しく設定していません。

エラーログを貼り付けるときは、ページネーションを試してください。私は個人的にこれを行います

編集:コードを編集してくれた@trinimonに感謝します:) & @RiteshGune pour avoir éditer le mien :D

于 2013-08-28T08:27:07.370 に答える