2013-10-09 4 views
18

मैं एंड्रॉइड में नौसिखिया हूं और अपने पहले ऐप पर काम कर रहा हूं।मेनू बटन दबाकर गतिविधि में क्रैश का कारण बनता है कोई एक्शनबार

मेरे पास मुख्य गतिविधि नहीं है जिसमें ActionBar है। और मैं उस Activity में कोई मेनू प्रदर्शित नहीं करना चाहता हूं। सब कुछ ठीक काम कर रहा है लेकिन जब मैं डिवाइस में मौजूद मेनू बटन दबाता हूं, तो यह मेरे ऐप को अनदेखा करने के बजाय बंद करने के लिए मजबूर करता है।

मैं एसडीके> = 8 के लिए विकास कर रहा हूं इसलिए मैं समर्थन पुस्तकालय का उपयोग कर रहा हूं। मैंने कोड में OnCreateOptionMenu() जोड़ने की कोशिश की है जिसमें कुछ भी नहीं है लेकिन एक ही परिणाम के साथ समाप्त हुआ है।

मेरे ऐप का नाम जीयूआई है और पैकेज gui है। यहां लॉगकैट है:

10-09 19:52:32.920: E/AndroidRuntime(7440): FATAL EXCEPTION: main 
10-09 19:52:32.920: E/AndroidRuntime(7440): java.lang.NullPointerException 
10-09 19:52:32.920: E/AndroidRuntime(7440):  at android.support.v7.app.ActionBarImplICS.getThemedContext(ActionBarImplICS.java:274) 
10-09 19:52:32.920: E/AndroidRuntime(7440):  at android.support.v7.app.ActionBarActivityDelegate.getMenuInflater(ActionBarActivityDelegate.java:89) 
10-09 19:52:32.920: E/AndroidRuntime(7440):  at android.support.v7.app.ActionBarActivity.getMenuInflater(ActionBarActivity.java:71) 
10-09 19:52:32.920: E/AndroidRuntime(7440):  at android.app.Activity.onCreatePanelMenu(Activity.java:2554) 
10-09 19:52:32.920: E/AndroidRuntime(7440):  at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:224) 
10-09 19:52:32.920: E/AndroidRuntime(7440):  at android.support.v7.app.ActionBarActivity.superOnCreatePanelMenu(ActionBarActivity.java:224) 
10-09 19:52:32.920: E/AndroidRuntime(7440):  at android.support.v7.app.ActionBarActivityDelegateICS.onCreatePanelMenu(ActionBarActivityDelegateICS.java:141) 
10-09 19:52:32.920: E/AndroidRuntime(7440):  at android.support.v7.app.ActionBarActivity.onCreatePanelMenu(ActionBarActivity.java:199) 
10-09 19:52:32.920: E/AndroidRuntime(7440):  at android.support.v7.app.ActionBarActivityDelegateICS$WindowCallbackWrapper.onCreatePanelMenu(ActionBarActivityDelegateICS.java:280) 
10-09 19:52:32.920: E/AndroidRuntime(7440):  at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:453) 
10-09 19:52:32.920: E/AndroidRuntime(7440):  at com.android.internal.policy.impl.PhoneWindow.onKeyDownPanel(PhoneWindow.java:853) 
10-09 19:52:32.920: E/AndroidRuntime(7440):  at com.android.internal.policy.impl.PhoneWindow.onKeyDown(PhoneWindow.java:1535) 
10-09 19:52:32.920: E/AndroidRuntime(7440):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2052) 
10-09 19:52:32.920: E/AndroidRuntime(7440):  at android.view.ViewRootImpl.deliverKeyEventPostIme(ViewRootImpl.java:3924) 
10-09 19:52:32.920: E/AndroidRuntime(7440):  at android.view.ViewRootImpl.handleImeFinishedEvent(ViewRootImpl.java:3872) 
10-09 19:52:32.920: E/AndroidRuntime(7440):  at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:3007) 
10-09 19:52:32.920: E/AndroidRuntime(7440):  at android.os.Handler.dispatchMessage(Handler.java:99) 
10-09 19:52:32.920: E/AndroidRuntime(7440):  at android.os.Looper.loop(Looper.java:137) 
10-09 19:52:32.920: E/AndroidRuntime(7440):  at android.app.ActivityThread.main(ActivityThread.java:4921) 
10-09 19:52:32.920: E/AndroidRuntime(7440):  at java.lang.reflect.Method.invokeNative(Native Method) 
10-09 19:52:32.920: E/AndroidRuntime(7440):  at java.lang.reflect.Method.invoke(Method.java:511) 
10-09 19:52:32.920: E/AndroidRuntime(7440):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038) 
10-09 19:52:32.920: E/AndroidRuntime(7440):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805) 
10-09 19:52:32.920: E/AndroidRuntime(7440):  at dalvik.system.NativeStart.main(Native Method) 

मैं यह नहीं समझ सकता कि इस त्रुटि का कारण क्या है। कृपया इसे ढूंढने में मेरी मदद करें। अगर किसी अन्य जानकारी की आवश्यकता है तो कृपया मुझे बताएं।

उत्तर

49

मेरा अनुमान है कि यह AppCompat लाइब्रेरी में एक बग है। आप ActionBarImplICS.getThemedContext() के लिए कोड पर एक नज़र डालें, तो आप देखते हैं कि यह mActionBar है कि रिक्त है:

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.3_r1/android/support/v7/app/ActionBarImplICS.java#ActionBarImplICS.getThemedContext%28%29

मेरा अनुमान है कि आप बिना शीर्षक गतिविधि का उपयोग कर रहे (और इस प्रकार भी है एक ActionBar के बिना):

requestWindowFeature(Window.FEATURE_NO_TITLE); 

अगर मैं ActionBar मैं नहीं किया है दुर्घटना पुन: पेश करने में सक्षम किया गया एक शीर्षक के साथ इस को हटाने और गतिविधि का शुभारंभ /। अब, जब आप नहीं चाहते हैं या एक की जरूरत है तो एक शीर्षक पट्टी के साथ ऐप चला रहा है एक बहुत अच्छा विकल्प नहीं है। मेरा सुझाव यह है कि आप मेनू कुंजी प्रेस को ओवरराइड करते हैं।

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_MENU) { 
     // do nothing 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+1

कि सिर्फ मेरे लिए पूरी तरह से काम किया है में तय हो जाएगा की तरह: एप्लिकेशन मेरे लिए दुर्घटनाग्रस्त जब मैं इस किया था बंद कर दिया। हां मैंने अपनी गतिविधि के लिए कोई शीर्षक बार नहीं बनाया है। और जैसा कि आपने सही तरीके से इंगित किया है, त्रुटि का कारण संभवतया प्राप्त किया गया था ThemedContext() फ़ंक्शन। आपकी मदद के लिए बहुत बहुत धन्यवाद। मुझे उम्मीद है कि यह दूसरों के लिए भी आसान होगा। – Anjani

+0

यदि कोई एक ही समस्या में टक्कर देता है: मैं एक टैबमेनू का उपयोग कर रहा हूं, इसलिए मुझे इस कोड को वास्तव में ईवेंट को पकड़ने के लिए सभी विचारों में जोड़ना पड़ा। –

+2

@britzl you da mannn! –

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