添加clickListener时应用程序崩溃

时间:2010-11-17 08:42:46

标签: android

我有一个应用程序在单击图像时设置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似乎没有显示任何内容。

1 个答案:

答案 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();
    }
});