几周前我开始在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" />
答案 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);
}