按下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>
答案 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);