首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OnClick inside OnClick强制关闭

OnClick inside OnClick强制关闭
EN

Stack Overflow用户
提问于 2012-01-11 06:32:22
回答 1查看 690关注 0票数 0

您知道为什么这会使我的应用程序意外关闭:

代码语言:javascript
复制
b2.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                     setContentView(R.layout.id_weather);
                     //getting image form url
                    try {
                          ImageView i = (ImageView)findViewById(R.id.weather_icon);
                          Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL("www.myimageurl.png").getContent());
                          i.setImageBitmap(bitmap); 
                        } catch (MalformedURLException e) {
                          e.printStackTrace();
                        } catch (IOException e) {
                          e.printStackTrace();
                        }
                    Button b4=(Button)findViewById(R.id.button_weather10);
                    b4.setOnClickListener(new View.OnClickListener() {
                        public void onClick(View l) {

                            System.out.println("Yeah");
                    }
                    }); 
            }
            }); 

如果我注释掉第二个setOnClickListener,它就可以工作。这就像setOnClick中的SetOnClick不工作一样。

这是我的logcat:

代码语言:javascript
复制
Uncaught handler: thread main exiting due to uncaught exception
java.lang.NullPointerException
at com......MyScreen$2.onClick(MyScreen.java:133)

第133行是我单击的第二行

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-11 06:59:06

我认为如果要从clickListener的声明中调用findViewById(),就必须显式地使用activity.this,如下所示:

代码语言:javascript
复制
Button b4=(Button)YourActivity.this.findViewById(R.id.button_weather10);

否则,我认为它将尝试调用OnClickListener类的findViewById()方法,而这个方法并不存在。

似乎您必须多次尝试调用setContentView()。你有

代码语言:javascript
复制
setContentView(R.layout.id_weather);

在b2的单击侦听器中。但是如果你还没有设置内容,那么你就没有按钮可以点击了。如果你已经设置了一次内容,那么第二次设置应该会失败。我想你只能调用一次setContentView()。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8811507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档