单击时如何使按钮重新出现在不同的位置?

时间:2017-10-25 08:34:54

标签: java android android-layout button

几周前我开始在Android工作室学习编码。现在我尝试制作一个有9个按钮的应用程序,但你总能看到其中一个按钮。当您单击可见按钮时,它将消失并显示另一个,依此类推。 这是我到目前为止所做的:

MainActivity.java

public class MainActivity extends AppCompatActivity {
    Button shownButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        shownButton = (Button) findViewById(R.id.b1);
        shownButton.setVisibility(View.VISIBLE);
    }


    public void buttonDisappear(View view){
        shownButton.setVisibility(View.INVISIBLE);
        Random generatedNumber = new Random();
        int buttonNumber = generatedNumber.nextInt(10 - 0) + 10;
        String nextShownButton = "b"+String.valueOf(buttonNumber);
        int nextShownButtonId = getResources().getIdentifier(nextShownButton, "id", getPackageName());

        Button shownButton = (Button) findViewById(nextShownButtonId);
        shownButton.setVisibility(View.VISIBLE);

    }
}

在每个按钮属性" onClick"我设置了一个功能" buttonDisappear"。一切看起来都很好,没有错误,但是当我运行程序并点击第一个按钮(b1)时,应用程序就停止了。你能告诉我它为什么会发生这种情况吗?我该如何解决?谢谢。

更新

activity_main.xml中

  <Button
        android:id="@+id/b1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="8dp"
        android:layout_marginTop="8dp"
        android:onClick="buttonDisappear"
        android:text="@string/mygtukas"
        android:visibility="invisible"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/b2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginTop="48dp"
        android:onClick="buttonDisappear"
        android:text="@string/mygtukas"
        android:visibility="invisible"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/b9" />

    <Button
        android:id="@+id/b3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="8dp"
        android:layout_marginTop="48dp"
        android:onClick="buttonDisappear"
        android:text="@string/mygtukas"
        android:visibility="invisible"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/b5" />

    <Button
        android:id="@+id/b4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="48dp"
        android:onClick="buttonDisappear"
        android:text="@string/mygtukas"
        android:visibility="invisible"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/b5" />

    <Button
        android:id="@+id/b5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginTop="48dp"
        android:onClick="buttonDisappear"
        android:text="@string/mygtukas"
        android:visibility="invisible"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/b7" />

    <Button
        android:id="@+id/b6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="8dp"
        android:layout_marginTop="48dp"
        android:onClick="buttonDisappear"
        android:text="@string/mygtukas"
        android:visibility="invisible"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/b2" />

    <Button
        android:id="@+id/b7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="48dp"
        android:onClick="buttonDisappear"
        android:text="@string/mygtukas"
        android:visibility="invisible"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/b2" />

    <Button
        android:id="@+id/b9"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="8dp"
        android:onClick="buttonDisappear"
        android:text="@string/mygtukas"
        android:visibility="invisible"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

1 个答案:

答案 0 :(得分:1)

你说你只有 9 按钮,名字从b1-b9开始 而你生成的数字总是大于或等于10

public void buttonDisappear(Button view){
    shownButton.setVisibility(View.INVISIBLE);
    Random generatedNumber = new Random();
    int buttonNumber = generatedNumber.nextInt(9)+1;
    String nextShownButton = "b"+String.valueOf(buttonNumber);
    int nextShownButtonId = getResources().getIdentifier(nextShownButton, "id", getPackageName());

    Button shownButton = (Button) findViewById(nextShownButtonId);
    shownButton.setVisibility(View.VISIBLE);

}