2017-10-25 1 views
0

몇 주 전에 안드로이드 스튜디오에서 코딩을 배우기 시작했습니다. 이제 저는 9 개의 버튼이있는 응용 프로그램을 만들려고합니다. 그러나 당신은 항상 그 중 하나만 보게됩니다. 보이는 단추를 클릭하면 사라지고 다른 단추가 표시됩니다. 이것은 내가 지금까지 만든 한 것입니다 : 모든 버튼 속성 "onclick을"나는 함수 "buttonDisappear"로 설정에서버튼을 클릭하면 다른 위치에 버튼을 다시 표시하는 방법은 무엇입니까?

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); 

    } 
} 

. 모든 것이 나에게 잘 보이지만 오류는 없지만 프로그램을 실행하고 첫 번째 버튼 (b1)을 클릭하면 응용 프로그램이 중지됩니다. 왜 그런 일이 일어 났으며 어떻게 해결할 수 있습니까? 고맙습니다.

UPDATE

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

'buttonDisappear (버튼보기)'를 'buttonDisappear (view view)' – Jerrol

+3

stacktrace를 게시하십시오. –

+0

xml 및 stacktrace를 공유하십시오. – Godwin

답변

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); 

} 
+0

좋은 캐치! 그건 그렇고, 단지 그것의 가시성을 설정하기 위해서'findViewById'의 반환 값을'Button'으로 던질 필요가 없습니다. 'findViewById (nextShownButtonId) .setVisibility (View.VISIBLE)'로 충분합니다. –

+0

@ HiI'mFrogatto 맞습니다.하지만 캐스팅으로 인해 앱이 멈추지 않습니다. – Godwin

+0

네, 맞습니다. 하지만 꼭 필요한 것은 아닙니다. –

관련 문제