0

我有一个Activity我使用两种布局。在这两种布局中,我有不同的Buttons. 从Layout我第一次调用该函数到第二次Layout,它都可以工作。Button但是,当我在第二个的下一个调用第一个方法时Layout,应用力关闭。

这是显示错误的代码:

Button.OnClickListener myOptionOnClickListener1 = new Button.OnClickListener() {
    public void onClick(View v1) {
        switch (v1.getId()) {
            case R.id.next:
                x++;
                Toast.makeText(getBaseContext(), "is" + x, Toast.LENGTH_SHORT).show();
                setonListener();
                break;
            case R.id.exit:
                finish();
                break;
        }
    }
};

// this code properly works.

Button.OnClickListener myOptionOnClickListener = new Button.OnClickListener() {
    public void onClick(View v) {
        if (x < 5) {
            setonListener();
        } else {
            nextonListener();
        }
    }
};

我得到的错误是:

07-11 12:42:55.001: E/AndroidRuntime(24227): java.lang.NullPointerException

07-11 12:42:55.001: E/AndroidRuntime(24227):    at com.infoways.quizcash.levelnxt.setonListener(levelnxt.java:81)
07-11 12:42:55.001: E/AndroidRuntime(24227):    at com.infoways.quizcash.levelnxt$2.onClick(levelnxt.java:165)
07-11 12:42:55.001: E/AndroidRuntime(24227):    at android.view.View.performClick(View.java:2532)
07-11 12:42:55.001: E/AndroidRuntime(24227):    at android.view.View$PerformClick.run(View.java:9293)
07-11 12:42:55.001: E/AndroidRuntime(24227):    at enter code hereandroid.os.Handler.handleCallback(Handler.java:587)
07-11 12:42:55.001: E/AndroidRuntime(24227):    at android.os.Handler.dispatchMessage(Handler.java:92)
07-11 12:42:55.001: E/AndroidRuntime(24227):    at android.os.Looper.loop(Looper.java:143)
07-11 12:42:55.001: E/AndroidRuntime(24227):    at android.app.ActivityThread.main(ActivityThread.java:4277)
07-11 12:42:55.001: E/AndroidRuntime(24227):    at java.lang.reflect.Method.invokeNative(Native Method)
07-11 12:42:55.001: E/AndroidRuntime(24227):    at java.lang.reflect.Method.invoke(Method.java:507)
07-11 12:42:55.001: E/AndroidRuntime(24227):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
07-11 12:42:55.001: E/AndroidRuntime(24227):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
07-11 12:42:55.001: E/AndroidRuntime(24227):    at dalvik.system.NativeStart.main(Native Method)

我无法解决问题。这是 和 的setonListener代码nextonListenersetonListener第一次正常工作,但是当我从按钮调用它时出现问题。

public void setonListener()
{
    URL = "http://contest_id=100&game_id=1level="+count;
    //Toast.makeText(getBaseContext(), URL, Toast.LENGTH_SHORT).show();
    String xml = parser.getXmlFromUrl(URL); // getting XML
    Document doc = parser.getDomElement(xml); // getting DOM element
    final NodeList nl = doc.getElementsByTagName(KEY_QUESTION);

    // looping through all item nodes <item>s
    for(int j=0;j<nl.getLength();j++)
    {
        Element e = (Element) nl.item(j);
        listnew[j]=parser.getValue(e,KEY_QUEST); 
        options1[j]= parser.getValue(e, KEY_CHOICE1);
        options2[j]= parser.getValue(e, KEY_CHOICE2);
        options3[j]= parser.getValue(e, KEY_CHOICE3);
    }

    TextView question = (TextView)findViewById(R.id.question);
    question.setText(listnew[x]);

    opt1 = (Button)findViewById(R.id.opt1);
    opt1.setText(options1[x]);
    opt1.setOnClickListener(myOptionOnClickListener);

    opt2 = (Button)findViewById(R.id.opt2);
    opt2.setText(options2[x]);
    opt2.setOnClickListener(myOptionOnClickListener);

    opt3 = (Button)findViewById(R.id.opt3);
    opt3.setText(options3[x]);
    opt3.setOnClickListener(myOptionOnClickListener);

    x++; 
}; 
4

1 回答 1

0

似乎错误出现在您的setonListener()方法中。也许您在执行之前使某些内容为空。setonListener在第 81 行调试你的和断点。如果问题仍然存在,请发布更多代码。

于 2012-07-11T07:30:17.457 回答