setOnClickListener抱怨我应该使用setOnItemClickListener

时间:2011-12-04 04:19:53

标签: java android

我之前有以下代码。然后在我开始处理另一个活动(实现ListActivity并通过扩展ArrayAdapter为每行提供自定义视图)之后,我开始获取RuntimeException:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ezport/com.ezport.EzportActivity}: java.lang.RuntimeException: Don't call setOnClickListener for an AdapterView. You probably want setOnItemClickListener instead

这是代码

package com.ezport;

import android.app.Activity;
import android.os.Bundle;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;    
public class EzportActivity extends Activity implements OnClickListener {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        View view_orders_button = findViewById(R.id.view_orders_button);
        view_orders_button.setOnClickListener(this);
        View submit_invoice_button = findViewById(R.id.submit_invoice_button);
        submit_invoice_button.setOnClickListener(this);
        View help_button = findViewById(R.id.help_button);
        help_button.setOnClickListener(this);
    }

    public void onClick(View view) {
        switch (view.getId()) {
        case R.id.view_orders_button:
            Intent order_intent = new Intent(this, OrderActivity.class);
            startActivity(order_intent);
            break;
        case R.id.submit_invoice_button:
            //Intent i = new Intent(this, )
            break;
        case R.id.help_button:
            Intent help_intent = new Intent(this, HelpActivity.class);
            startActivity(help_intent);
            break;
        }
    }
}

我做错了什么?

3 个答案:

答案 0 :(得分:1)

试试这个:

Button button1 = (Button)findViewById(R.id.button);
button1.setOnClickListener(this);

这对我有用,它可能会解决你的问题,看起来好的代码我不明白为什么它不会起作用。

答案 1 :(得分:0)

我只是遇到了同样的问题,但代码编译工作正常。

实际发生的是,我在XML布局文件中重新排序了项目。之后(Eclicpe)菜单 - 项目 - 清洁我再次没事了。

答案 2 :(得分:0)

您需要将其投射到特定的视图。假如你使用ImageButton而不是这个

View help_button = findViewById(R.id.help_button);

使用此

ImageButton help_button = (ImageButton)findViewById(R.id.help_button);