Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java setVisibility(View.INVISIBLE)使我的应用程序崩溃_Java_Android - Fatal编程技术网

Java setVisibility(View.INVISIBLE)使我的应用程序崩溃

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_

我正在尝试编写一个应用程序,其中包含触发声音的按钮,并希望这些按钮只有在按下时才可见。但当我添加setVisibility方法时,它会使我的应用程序崩溃。以下是我的xml代码:

<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
,然后查看其效果