java - 单击按钮时显示/隐藏 ImageView

标签 java android button imageview

我有一个完全在java中创建的RelativeLayout,而不是使用xml布局。 如果我的屏幕左侧有几个按钮。我想单击一个按钮并在按钮旁边显示来 self 的 res/drawable 的默认图像,并使其在第二次单击时再次消失。 我尝试过切换可见性,但我的 onClick() 引发了致命异常,空指针异常。

这是我到目前为止的代码。当我手动设置 picview.setVisibility(View.INVISIBLE); 时,硬编码图像会正确显示。我在 onClick() 中做错了什么?

    private ImageView picview;

        //*snip* loads of other code

    //Show Image Button
    ImageButton show_pic = new ImageButton(this);
    show_pic.setBackgroundColor(Color.WHITE);
    show_pic.setOnClickListener(new OnClickListener()
    {

        @Override
        public void onClick(View v) {
            if(picview.getVisibility() == View.INVISIBLE)
             {
             picview.setVisibility(View.VISIBLE);
             } 
            else if (picview.getVisibility() == View.VISIBLE)
             {
             picview.setVisibility(View.INVISIBLE);
             }          
            }

    });

    params = new RelativeLayout.LayoutParams(40, 40);
    params.topMargin = 10;
    params.leftMargin = 10;
    params.addRule(RelativeLayout.BELOW, button2_id);
    rl.addView(show_pic, params);

    //Imageview loaded from drawable
    ImageView picview = new ImageView(this);
    params = new RelativeLayout.LayoutParams(200, 400);
    params.topMargin = 0;
    params.leftMargin = 30;
    params.addRule(RelativeLayout.RIGHT_OF, button2_id);
    picview.setImageResource(R.drawable.my_image);
    picview.setVisibility(View.INVISIBLE);
    rl.addView(picview, params);

    this.setContentView(rl);

最佳答案

您不小心创建了 picview 的两个副本。缩短此行:

ImageView picview = new ImageView(this);

致:

picview = new ImageView(this);

(您的字段变量 private ImageView picview; 从未从 null 更改,因此当您单击按钮时,您会看到 NullPointerException...)

关于java - 单击按钮时显示/隐藏 ImageView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13336570/

相关文章:

java - SimpleIdentificResourceAssembler 无法解析为类型

java - 按特定顺序从 ResultSet 中检索和显示值

java - DriverManager 无法打开 SQL 连接器 jar

java - 线程转储 : The hexa-decimal (lock, 条件等) - 它们是什么,以及如何理解它们是什么?

android - 如何将 OneSignal 与 Android Studio 结合使用以允许通知直接链接到帖子内容?

javascript - 初学者 JavaScript 数组

android - 为什么当我尝试创建一个新的 android xml 文件时 eclipses 崩溃

Android 发布取消!控制台错误

javascript - 无论单击“确定”还是“取消”,我的确认弹出窗口仍在删除对象。为什么? Angular 怪?

button - 如果一个按钮被禁用那么我想跳过点击它,如果它被启用我想点击使用柏树