2012-01-12 92 views
0

大家好我正在努力解決一個奇怪的問題。 我將ViewFlipper更改爲ViewPager,並且因爲我的應用程序崩潰。我發現不是Viewpager崩潰,而是button.setOnClickListener方法。我評論了一切,所以我注意到,應用程序工作正常,如果我用這種方法註釋掉我的兩個按鈕。而且這不是裏面的onClick()的東西,我treied出來,它崩潰,即使它在這裏empty.but與一個IM戰鬥的一些代碼:當設置onClickListener時,應用程序崩潰?

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 




    MyPagerAdapter adapter = new MyPagerAdapter(); 
     ViewPager myPager = (ViewPager)findViewById(R.id.pager); 
     myPager.setAdapter(adapter); 
     myPager.setCurrentItem(1); 
    new Toolbox();  

push = (Button)findViewById(R.id.pushbutton); 
      push.setOnClickListener(new OnClickListener() { 


       public void onClick(View v) { 
        head=head_field.getText().toString(); 
        note=note_field.getText().toString(); 
        try { 
         Toolbox.createTask(userToken,task, Dashboard_id, head, note, service); 
         head_field.setText(""); 
         note_field.setText(""); 
        } catch (ProducteevException e) { 
         return; 

        } 
       } 
      }); 

這是按鈕的XML摘錄:

<Button 
      android:id="@+id/pushbutton" 
      android:layout_width="200dp" 
      android:layout_height="200dp" 
      android:layout_gravity="center_horizontal" 
      android:layout_marginTop="35dp" 
      android:background="@drawable/push_button" /> 

,並在這裏的logcat如果有人知道這個問題

01-12 20:50:24.402: W/dalvikvm(28405): threadid=1: thread exiting with uncaught exception (group=0x40015578) 
01-12 20:50:24.402: E/AndroidRuntime(28405): FATAL EXCEPTION: main 
01-12 20:50:24.402: E/AndroidRuntime(28405): java.lang.RuntimeException: Unable to start activity ComponentInfo{producteev.push/producteev.push.Producteev_pushActivity}: java.lang.NullPointerException 
01-12 20:50:24.402: E/AndroidRuntime(28405): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 
01-12 20:50:24.402: E/AndroidRuntime(28405): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 
01-12 20:50:24.402: E/AndroidRuntime(28405): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
01-12 20:50:24.402: E/AndroidRuntime(28405): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 
01-12 20:50:24.402: E/AndroidRuntime(28405): at android.os.Handler.dispatchMessage(Handler.java:99) 
01-12 20:50:24.402: E/AndroidRuntime(28405): at android.os.Looper.loop(Looper.java:123) 
01-12 20:50:24.402: E/AndroidRuntime(28405): at android.app.ActivityThread.main(ActivityThread.java:3687) 
01-12 20:50:24.402: E/AndroidRuntime(28405): at java.lang.reflect.Method.invokeNative(Native Method) 
01-12 20:50:24.402: E/AndroidRuntime(28405): at java.lang.reflect.Method.invoke(Method.java:507) 
01-12 20:50:24.402: E/AndroidRuntime(28405): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842) 
01-12 20:50:24.402: E/AndroidRuntime(28405): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 
01-12 20:50:24.402: E/AndroidRuntime(28405): at dalvik.system.NativeStart.main(Native Method) 
01-12 20:50:24.402: E/AndroidRuntime(28405): Caused by: java.lang.NullPointerException 
01-12 20:50:24.402: E/AndroidRuntime(28405): at producteev.push.Producteev_pushActivity.onCreate(Producteev_pushActivity.java:122) 
01-12 20:50:24.402: E/AndroidRuntime(28405): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
01-12 20:50:24.402: E/AndroidRuntime(28405): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 
01-12 20:50:24.402: E/AndroidRuntime(28405): ... 11 more 

將是驚人的。

+0

看到這一行 01-12 20:50:24.402:E/AndroidRuntime(28405):在producteev.push.Producteev_pushActivity.onCreate(Producteev_pushActivity.java:122) 這是你最好的朋友,學會找你包的名稱來查找崩潰的原因 – 2012-01-13 22:49:39

回答

0

確保你推布頓的ID是corect,看來你findViewById()返回null ...

+0

是的,正如你在這裏看到的那樣:push =(Button)findViewById(R.id.pushbutton); == android:id =「@ + id/pushbutton」但你說得對,它會返回null! – Florian 2012-01-12 20:09:58

+0

我看到了,但是您可以在設置點擊偵聽器的行上設置斷點,並查看您的按鈕對象是否爲空 – Cata 2012-01-12 20:11:37

+0

如果它返回null,請發佈您的整個代碼以便我們可以更好地幫助您 – Cata 2012-01-12 20:12:27

0

因爲我看不到你的代碼的全部,這是很難確切地知道,但它看起來這個錯誤可能是從你的堆棧跟蹤創建時引發的。由於onClick()方法中沒有任何反應,我能想到的唯一其他事情就是push必須爲null,這是您發佈的代碼。這可能是由於ID不正確(被傳入findViewById()調用中)導致的,或者,如果編譯器似乎與傳入的ID一致(我認爲它不會否則編譯)它可能是(Button)工作不正常。我會檢查您的R.id.pushbutton的實際班級類型並確保它是(Button)

+0

當然,正如您在XML中看到的那樣,它是一個Button,Eclipse也表示R.id.pushbutton是可以的,而且它也是正確的。 – Florian 2012-01-12 20:13:39

+0

啊,是的 - 錯過了看到你的XML以上...是否有可能你重寫findViewByID()方法,而不是在那裏返回?即你以某種方式從該覆蓋返回null?如果可能的話,看到更多的這個Java所在的類可能會更容易幫助調試。 – waxspin 2012-01-12 20:26:09

+0

解決了它。愚蠢的錯誤。當我添加Viewpager時,我改變了主佈局,所以Button不再是Main,所以findViewById找不到任何東西。現在我使用了LayouInflater來獲得正確的視圖。非常感謝 – Florian 2012-01-12 20:28:06

相關問題