3

私は Android/Java プログラミングにかなり慣れていないので、私が使用している非常に基本的なアプリのヘルプを探しています。私は純粋に、Java コーディングと Droid 用のアプリケーションの構築に慣れるためにこれを構築しているので、ご容赦ください。

10 個のラジオ ボタンをグループ化しましたが、そのうちの 1 つだけが正しい答えです (ボタン #10)。ユーザーが1〜9のいずれかをクリックすると、「申し訳ありませんが、もう一度やり直してください」というメッセージが表示されますが、#10をクリックすると、新しいアクティビティ、つまり私がお祝いの言葉やそのような性質のものを言ういくつかのグラフィックスとテキストを入れてください. ボタンは 1 ~ 9 では正常に機能しますが、#10 をクリックすると強制終了エラーが発生します。

これが私がこれまでに持っているものです:

    public class MainQuiz extends Activity implements OnCheckedChangeListener, android.widget.RadioGroup.OnCheckedChangeListener {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_quiz);
    ((RadioGroup)findViewById(R.id.radio_group)).setOnCheckedChangeListener(this);}  

public void onCheckedChanged(RadioGroup radioGroup, int checkedId) {    
        String numeral = null;              
        if (checkedId == R.id.button1) {
            numeral = "Nope, try again!";
        } else if (checkedId == R.id.button2) {
            numeral = "Nope, try again!";
        } else if (checkedId == R.id.button3) {
            numeral = "Nope, try again!";
        }   
        else if (checkedId == R.id.button4) {
            numeral = "Nope, try again!";
        } 
        else if (checkedId == R.id.button5) {
            numeral = "Nope, try again!";
        } 
        else if (checkedId == R.id.button6) {
            numeral = "Nope, try again!";
        } 
        else if (checkedId == R.id.button7) {
            numeral = "Nope, try again!";
        } 
        else if (checkedId == R.id.button8) {
            numeral = "Nope, try again!";
        } 
        else if (checkedId == R.id.button9) {
            numeral = "Nope, try again!";
        } 
        else if (checkedId == R.id.button10) {
            Intent myIntent = new Intent(MainQuiz.this, CorrectAnswer.class); 
            MainQuiz.this.startActivity(myIntent);


        } 
        Toast.makeText(getApplicationContext(), ""+numeral+"",
                Toast.LENGTH_SHORT).show();        } 

これは簡単な修正であり、私が台無しにした構文とコードに明らかなものがあると確信していますが、繰り返しになりますが、私は新しいです:)

ありがとう!

強制終了後のログは次のとおりです。

11-14 13:56:48.982: D/AndroidRuntime(862): Shutting down VM
11-14 13:56:48.982: W/dalvikvm(862): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
11-14 13:56:48.992: E/AndroidRuntime(862): FATAL EXCEPTION: main
11-14 13:56:48.992: E/AndroidRuntime(862): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.test.quiz/com.test.quiz.CorrectAnswer}: java.lang.ClassCastException: com.test.quiz.CorrectAnswer
11-14 13:56:48.992: E/AndroidRuntime(862):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
11-14 13:56:48.992: E/AndroidRuntime(862):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
11-14 13:56:48.992: E/AndroidRuntime(862):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
11-14 13:56:48.992: E/AndroidRuntime(862):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
11-14 13:56:48.992: E/AndroidRuntime(862):  at android.os.Handler.dispatchMessage(Handler.java:99)
11-14 13:56:48.992: E/AndroidRuntime(862):  at android.os.Looper.loop(Looper.java:123)
11-14 13:56:48.992: E/AndroidRuntime(862):  at android.app.ActivityThread.main(ActivityThread.java:4627)
11-14 13:56:48.992: E/AndroidRuntime(862):  at java.lang.reflect.Method.invokeNative(Native Method)
11-14 13:56:48.992: E/AndroidRuntime(862):  at java.lang.reflect.Method.invoke(Method.java:521)
11-14 13:56:48.992: E/AndroidRuntime(862):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-14 13:56:48.992: E/AndroidRuntime(862):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-14 13:56:48.992: E/AndroidRuntime(862):  at dalvik.system.NativeStart.main(Native Method)
11-14 13:56:48.992: E/AndroidRuntime(862): Caused by: java.lang.ClassCastException: com.test.quiz.CorrectAnswer
11-14 13:56:48.992: E/AndroidRuntime(862):  at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
11-14 13:56:48.992: E/AndroidRuntime(862):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)
11-14 13:56:48.992: E/AndroidRuntime(862):  ... 11 more
4

4 に答える 4

1

何が問題なのかわかりませんが、コードを改善できます。「スイッチ - ケース」構造を使用してください。

switch (chekedId) {
        case R.id.button10:
            Intent myIntent = new Intent(MainQuiz.this, CorrectAnswer.class); 
            startActivity(myIntent);
            break;
        default:
            Toast.makeText(getApplicationContext(), "Nope, try again!",
                Toast.LENGTH_SHORT).show();       
        }
于 2012-11-14T18:59:26.650 に答える
1

強制的に閉じると、常に例外スタック トレースが logcat ファイルに記録されます。これを今後の投稿に追加してください。クラッシュした回線とその理由を教えてください。

あなたのコードと Android の新しさから推測すると、マニフェストに CorrectAnswer アクティビティを追加していない可能性があります。

于 2012-11-14T18:43:57.473 に答える
0

この行がおそらく問題の原因のようです。

MainQuiz.this.startActivity(myIntent);

MainQuiz を削除すると、動作するはずです

this.startActivity(myIntent);
于 2012-11-14T19:01:08.023 に答える