我使用了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是可行的,但我在其他地方读到过使用它是一种不好的做法。
提前感谢!
发布于 2014-04-10 20:48:51
问题是您正在加载一个片段
if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
在PlaceholderFragment()
中不存在startButton
的引用
startStopButton = (Button) findViewById(R.id.startButton);
你的问题类似于这篇文章:
发布于 2014-04-10 20:45:33
替换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);
}
});
您传递的是引用当前activity..instead的对象,您应该传递实现onclick()方法的匿名用户类View.OnClickListener的对象。
发布于 2014-04-10 20:47:26
尝试将行implements OnClickListener
更改为implements View.OnClickListener
:-),或者如我现在所见。是否确定该按钮不在属于PlaceHolderFragment的XML布局文件中?
https://stackoverflow.com/questions/22998565
复制相似问题