2013-08-28 10 views
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() में है। मैं 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

क्या आप वास्तव में पॉज़() मैन्युअल रूप से कॉल कर सकते हैं? –

+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 editer le चेहरे का भाव: डी

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 को संबोधित करता है।

संबंधित मुद्दे