我已经使用了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可以正常工作,但我在其他地方读过,使用它是不好的做法。
提前致谢!
答案 0 :(得分:1)
问题是您正在加载片段
if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
并且PlaceholderFragment()
不存在startButton
startStopButton = (Button) findViewById(R.id.startButton);
你的问题与这篇文章类似:
答案 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
}
}