我想要访问视图中的对象,而不是应用程序中的主要内容视图。我该怎么做呢?
我试图添加一个onclicklistener,但每次都失败,因为程序似乎找不到按钮。
02-12 15:26:29.034: E/AndroidRuntime(11788): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.evolutionsystems.kiroco/com.evolutionsystems.kiroco.OverviewActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference还是说我走错了路?我是否应该在主视图中包含所有按钮并将其设置为隐藏,然后在用户与程序交互时动态更改它们?
编辑-这是抛出错误的代码类型。
final Button receiver = (Button) findViewById(R.id.receiver);
receiver.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
aboutKirocoClicked(v);
}
}); receiver按钮是与内容视图不同的视图的一部分,因此程序找不到它并返回null。
发布于 2015-02-13 00:27:35
当您调用findViewById( int )时,您请求的是所调用对象的上下文中的视图。
因此,如果这是一个活动,那么该对象必须是来自setContent的xml资源的一部分。
您也可以从其他放大的布局(菜单、碎片)中查找资源,但您必须调用该对象上的findViewById才能找到视图。
不是为了让你的生活变得复杂,但是一旦你对Android更熟悉了,你可能会想看看像Roboguice或Dagger这样的依赖注入框架。
发布于 2015-02-13 00:37:50
在您希望按钮出现的活动中,添加以下代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//In activity_main.xml, you have a button.
setContentView(R.layout.activity_main);
//You get this button with the referencing ID
Button myBtn = (Button) findViewById(R.id.my_btn_id);
//Now, you can set your onClickListner
myBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Handle your button click
}
});
}https://stackoverflow.com/questions/28481476
复制相似问题