setOnClickListener出错(this)

时间:2014-04-10 20:40:32

标签: android onclicklistener

我已经使用了Eclipse默认创建的代码,并添加了一个带有OnClickListener的按钮。

以下代码在我使用setOnClickListener(this)的最后一行崩溃。

public class MainActivity extends Activity implements OnClickListener {

    private Button startStopButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);     

        if (savedInstanceState == null) {
            getFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment()).commit();
        }

        startStopButton = (Button) findViewById(R.id.startButton);
        startStopButton.setOnClickListener(this);
    }

这可能是微不足道的,但我不明白这是什么问题。如果以任何方式相关,onClick方法定义如下,但它现在什么都不做。

在布局xml中使用onClick可以正常工作,但我在其他地方读过,使用它是不好的做法。

提前致谢!

4 个答案:

答案 0 :(得分:1)

问题是您正在加载片段

 if (savedInstanceState == null) {
            getFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment()).commit();
        }

并且PlaceholderFragment()不存在startButton

的引用
 startStopButton = (Button) findViewById(R.id.startButton);

你的问题与这篇文章类似:

<强> Unable to load url in webview (android)

答案 1 :(得分:0)

startStopButton.setOnClickListener(this);替换为

startStopButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                Intent i=new Intent("com.monster.android.activitylifecycle.SecndActivity");
                startActivity(i);

            }
        });

你正在传递这个引用当前活动的对象..你应该传递实现onclick()方法的annonymouse类View.OnClickListener的对象..

答案 2 :(得分:0)

尝试将行implements OnClickListener更改为implements View.OnClickListener :-) 或者我现在看到的。 您确定该按钮不在属于PlaceHolderFragment的XML布局文件中吗?

答案 3 :(得分:0)

请实施onclick()方法。

public void onClick(View v){
        if(v.getId()==R.id.startButton)
{
    //type what you want to do here
}
}