当按下另一个可点击的ImageView时,如何使一个ImageView不可见?

时间:2015-10-11 17:41:06

标签: java android xml onclick imageview

按下ImageView(Seethrough)时,我试图使ImageView(bul1)消失。我尝试运行此代码时出现nullpointer错误。这有什么问题?

JAVA代码

public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final ImageView seethrough1 = (ImageView) findViewById(R.id.Seethrough);
    final ImageView view1 = (ImageView) findViewById(R.id.bul1);
    seethrough1.setOnClickListener(new View.OnClickListener() {

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

        }
    });

    }

XML代码

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
<ImageView
    android:layout_width="match_parent"
    android:layout_height="300dp"
    android:paddingBottom="6dp"
    android:src="@drawable/gun"
    android:clickable="true"
    android:id="@+id/Seethrough"
    android:onClick="next"
    />

    <ImageView
        android:layout_width="30dp"
        android:layout_height="wrap_content"
        android:src="@drawable/bullet"
        android:id="@+id/bul1"
        />
</LinearLayout>

4 个答案:

答案 0 :(得分:0)

您需要将seethrough的onClickListener与其onClick XML属性进行协调。我建议从xml中删除这一行:

android:onClick="next"

并将代码放在下一个方法中(如果有的话)

public void next (View v){
    some code
}

在您的可见性检查之后或之前检查是否适合您:

@Override
public void onClick(View v) { 

    //place some code here

    if(view1.getVisibility() == View.VISIBLE){
    view1.setVisibility(View.INVISIBLE);
    }

    //or here

}

答案 1 :(得分:0)

我认为他们的xml代码有问题,请尝试编写xml如下,

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:paddingBottom="6dp"
        android:src="@drawable/gun"
        android:clickable="true"
        android:id="@+id/Seethrough"
        android:onClick="next"
    />

    <ImageView
        android:layout_width="30dp"
        android:layout_height="wrap_content"
        android:src="@drawable/bullet"
        android:id="@+id/bul1"
    />
</LinearLayout>

答案 2 :(得分:0)

如果它返回NullPointerExeption,我认为你的ImageView是Null,因为

setContentView(R.layout.activity_main);

和activity_main.xml与您帖子的内容不同,请检查布局名称,然后重试。

答案 3 :(得分:0)

我发现我应该在方法中而不是之前声明图像视图。

像这样

public void onClick(View v) {
 ImageView seethrough1 = (ImageView) findViewById(R.id.Seethrough);