我有一个应用程序在单击图像时设置contentView。这个来自我的main.xml加载了options.xml。
settings.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
setContentView(R.layout.options);
}
});
但是当我向options.xml中的图像添加一个监听器时,app会在启动时崩溃。我通过下面的代码引用该图像并显示我正在添加的clickListener。
//ReturnHome is inside options.xml
//Adding this in my mainapp.java
returnHome = (ImageView)findViewById(R.id.returnHome);
returnHome.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
***APP CRASHES EVERY TIME WHEN I ADD THIS****
}
});
尝试查看是否抛出了错误,但LogCat似乎没有显示任何内容。
答案 0 :(得分:0)
findViewById
表示returnHome图像位于应用程序的上下文中。
如果在您的应用onCreate()
中,当您致电setContentView(R.layout.main);
时设置findViewById
,则会main.xml
查看图片returnHome
,这显然不是'{1}}因为它在options.xml
上,因此你会得到一个NullPointerException,因为如果找不到你要求的东西。
不是在main.xml的上下文中为returnHome声明图像侦听器,而是在更改布局后尝试执行此操作,可能作为方法:
private void changeView()
{
setContentView(R.layout.options);
returnHome = (ImageView)findViewById(R.id.returnHome);
returnHome.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// Perform whatever.....
}
});
}
然后将第一个onclick侦听器更改为:
settings.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
changeView();
}
});