Android 添加clickListener时应用程序崩溃
我有一个应用程序,在单击图像时设置contentView。这个程序从my main.xml加载options.xmlAndroid 添加clickListener时应用程序崩溃,android,Android,我有一个应用程序,在单击图像时设置contentView。这个程序从my main.xml加载options.xml settings.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { setContentView(R.layout.options); }
settings.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
setContentView(R.layout.options);
}
});
但是,当我将侦听器添加到options.xml中的图像时,应用程序在启动时崩溃。我通过下面的代码引用图像,并显示我正在添加的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似乎没有显示任何内容。
findViewById
返回主页映像位于应用程序的上下文中
如果在应用程序中设置了setContentView(R.layout.main)
当您调用findViewById
时,它将查看main.xml
中的图像returnHome
,该图像显然不存在,因为它在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();
}
});
如果应用程序因该代码崩溃,LogCat将捕获99%(如果不是100)的异常。试着在那里放一个断点,看看是不是这一行导致了问题。我不知道如何调试,但LogCat正在捕获一些东西。它说下面120是我在.java.lang.NullPointerException上的代码行