2012-01-12 51 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

相关问题