EDIT: Siehe mitgeliefertes Fehlerprotokoll.Rollen eines Würfels basierend auf der Anzahl der Seiten
Ich versuche, eine einfache App zu erstellen, um verschiedene Seitenwürfel in Android Studio zu rollen. Dies ist mein Code so weit: MainActivity.java
package com.example.thomb.tutorialspoint;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.TextView;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.buttonRoll);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
int roll = RollDice(sidesChosen);
TextView tv1 = (TextView)findViewById(R.id.textView);
tv1.setText(roll);
setContentView(tv1);
}
});
}
public int sidesChosen;
public int RollDice(int sides) {
Random r = new Random();
return r.nextInt(sides)+1;
} //method
public void onRadioButtonClicked(View view) {
// Is the button now checked?
boolean checked = ((RadioButton) view).isChecked();
// Check which radio button was clicked
switch(view.getId()) {
case R.id.radioButtonD4:
if (checked)
sidesChosen = 4;
break;
case R.id.radioButtonD6:
if (checked)
sidesChosen = 6;
break;
case R.id.radioButtonD8:
if (checked)
sidesChosen = 8;
break;
case R.id.radioButtonD10:
if (checked)
sidesChosen = 10;
break;
case R.id.radioButtonD12:
if (checked)
sidesChosen = 12;
break;
case R.id.radioButtonD20:
if (checked)
sidesChosen = 20;
break;
} //switch
} //method
} //class
Dies ist, wie das Layout wie folgt aussieht: Abstürze http://i.imgur.com/IeIbMlz.png
Die App, wenn ich die Rolle Schaltfläche klicken, aber ich habe keine Ahnung, warum . Die IDs sind alle korrekt und die Optionsfelder funktionieren wie erwartet. Ich benutze API Level 25. Ich bin ziemlich neu in Java, aber ich bin ziemlich vertraut mit C#, so dass das Problem in der Code-Syntax liegen kann, obwohl Android Studio keine Fehler meldet. Lassen Sie mich wissen, wenn Sie das XML für das Layout auch sehen müssen.
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.thomb.tutorialspoint, PID: 5029
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
at android.view.ViewGroup.addViewInner(ViewGroup.java:4310)
at android.view.ViewGroup.addView(ViewGroup.java:4146)
at android.view.ViewGroup.addView(ViewGroup.java:4087)
at android.view.ViewGroup.addView(ViewGroup.java:4060)
at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:279)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:145)
at com.example.thomb.tutorialspoint.MainActivity$1.onClick(MainActivity.java:25)
at android.view.View.performClick(View.java:5280)
at android.view.View$PerformClick.run(View.java:21239)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:234)
at android.app.ActivityThread.main(ActivityThread.java:5526)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Haben Sie das Logcat beim Ausführen der App verwendet? Sie müssen mehr Informationen über den Absturz geben, der Logcat würde sagen, warum es abstürzt. –
Wenn Sie mit C# vertraut sind, gehe ich davon aus, dass Sie auch mit dem Debuggen vertraut sind. Wenn die App abstürzt, wird ein Absturzbericht erstellt, der angibt, was den Absturz und andere sehr nützliche Daten verursacht hat. Fange an, den Absturzbericht zu untersuchen und wenn du immer noch Probleme hast, kannst du es hier posten. –
für mich sieht der Code unvollständig aus. Was ist R? Was ist R.id mit all den Kontrollkästchen ... sind das die Steuerelemente, oder bereits boolesche Werte? Es R.id.radioButtonD4 ist der Radiobutton, Sie müssen die ID (oder den Namen) der Radios in Ihren Case-Anweisungen erhalten. –