Java setVisibility(View.INVISIBLE)使我的应用程序崩溃
我正在尝试编写一个应用程序,其中包含触发声音的按钮,并希望这些按钮只有在按下时才可见。但当我添加setVisibility方法时,它会使我的应用程序崩溃。以下是我的xml代码:Java setVisibility(View.INVISIBLE)使我的应用程序崩溃,java,android,Java,Android,我正在尝试编写一个应用程序,其中包含触发声音的按钮,并希望这些按钮只有在按下时才可见。但当我添加setVisibility方法时,它会使我的应用程序崩溃。以下是我的xml代码: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:id="@+id/background"
android:background="@drawable/image"
android:orientation="horizontal">
<ImageButton
android:id="@+id/btn1"
android:layout_width="109dp"
android:layout_height="89dp"
android:scaleType="fitXY"
android:layout_marginTop="26dp"
android:src="@mipmap/oneeee"
android:background="@null"
android:contentDescription="@null"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="1dp" />
</RelativeLayout>
您正在调用
btn.setVisibility(View.INVISIBLE)
在setContentView
之前调用此函数,这就是它崩溃的原因。请在setContentView
之后调用此函数,它将不会崩溃
i、 e
您正在调用
btn.setVisibility(View.INVISIBLE)
在setContentView
之前调用此函数,这就是它崩溃的原因。请在setContentView
之后调用此函数,它将不会崩溃
i、 e
我猜你得到了一个NullPointerException 这是因为在为
btn
赋值之前,您正在调用btn.setVisibility()
。所以btn
是null
通常的做法是在super.onCreate
之后立即执行setContentView(R.layout.)
。
在初始化之前,您要设置btn的可见性,以引用实际的按钮视图
建议的修改:
btn = (Button) findViewById(R.id.xxx);
btn.setVisibility(View.INVISIBLE);
我猜你得到了一个NullPointerException 这是因为在为
btn
赋值之前,您正在调用btn.setVisibility()
。所以btn
是null
通常的做法是在super.onCreate
之后立即执行setContentView(R.layout.)
。
在初始化之前,您要设置btn的可见性,以引用实际的按钮视图
建议的修改:
btn = (Button) findViewById(R.id.xxx);
btn.setVisibility(View.INVISIBLE);
btn对空实例的引用 移动线
btn.setVisibility(View.INVISIBLE);
之后
btn对空实例的引用 移动线
btn.setVisibility(View.INVISIBLE);
之后
在设置布局和检索按钮id之前,调用了btn.setVisiblility。正确的方法应该是首先设置布局,检索按钮id,然后设置按钮的可见性
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sound = MediaPlayer.create(this, R.raw.kick);
btn = (ImageButton) findViewById(R.id.btn1);
btn.setVisibility(View.INVISIBLE);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MediaPlayer mp = MediaPlayer.create(getApplicationContext(), R.raw.kick);
btn.setVisibility(View.VISIBLE);
mp.start();
}
});
}
在设置布局和检索按钮id之前,调用了btn.setVisiblility。正确的方法应该是首先设置布局,检索按钮id,然后设置按钮的可见性
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sound = MediaPlayer.create(this, R.raw.kick);
btn = (ImageButton) findViewById(R.id.btn1);
btn.setVisibility(View.INVISIBLE);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MediaPlayer mp = MediaPlayer.create(getApplicationContext(), R.raw.kick);
btn.setVisibility(View.VISIBLE);
mp.start();
}
});
}
您在声明按钮之前设置不可见,请放置btn.setVisibility(View.invisible);btn=(图像按钮)下的findViewById(R.id.btn1);您在声明按钮之前设置不可见,请放置btn.setVisibility(View.invisible);btn=(图像按钮)下的findViewById(R.id.btn1);它仍然会崩溃。因为btn仍然为空,所以它仍然会崩溃。因为btn仍然为空,这可能是一个新问题,因为它与原始问题无关。既然你在这里找到了阻止坠机的答案,你应该在这里把其中一个答案标记为正确的。还有另一个想法。在您的
onClick
方法中,尝试将btn
更改为v
,看看这可能是一个新问题,因为它与原始问题无关。既然你在这里找到了阻止坠机的答案,你应该在这里把其中一个答案标记为正确的。还有另一个想法。在您的onClick
方法中,尝试将btn
更改为v
,然后查看其效果