设置onClickListener时应用程序崩溃了?

时间:2012-01-12 19:53:43

标签: android button crash onclick android-viewpager

大家好,我正在努力解决一个奇怪的问题。 我将ViewFlipper更改为ViewPager,因为我的应用程序崩溃了。我发现它不是Viewpager崩溃而是button.setOnClickListener方法。我注释掉了其他一切,所以我注意到如果我用这种方法评论我的两个按钮,应用程序工作正常。而且它不是onClick()里面的东西,我把它揪出来它即使它是空的也会崩溃。但是这里有一些与我战斗的代码:

 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

如果有人知道这个问题会很棒。

2 个答案:

答案 0 :(得分:0)

确保您的按钮ID正确,似乎您的findViewById()返回null ...

答案 1 :(得分:0)

由于我无法看到您的整个代码,因此很难确定,但似乎错误可能会在您的堆栈跟踪创建时被抛出。由于onClick()方法中没有任何反应,我能想到的另一件事是push必须为null,这与您发布的代码无关。如果这是问题,可能会导致ID不正确(传递给findViewById()调用的那个),或者,如果编译器看起来没有你传入的id(我认为它不会编译否则)它可能是(Button)的投射不能正常工作。我会检查您R.id.pushbutton的实际班级类型的类型,并确保它是(Button)