Android应用程序崩溃:致命异常:main

时间:2022-08-13 21:11:58

I wrote Android QuizApp which randomly generates questions for users and then displays the result. When I tried to implement user interface where a user would enter the number and difficulty of questions, application started to crash and give me fatal exceptions. I have 4 classes:

我编写了Android QuizApp,它会随机生成问题,然后显示结果。当我尝试实现用户界面时,用户会输入问题的数量和难度,应用程序开始崩溃,并给我致命的例外。我有四类:

package com.example.quizapp;

import java.util.Random;
public class Quiz {
private int difficulty;
private int numberOfQuestions;
private Question[] questions;

public Quiz(String difficulty, int numberOfQuestions) {
    setDifficulty(difficulty);
    this.numberOfQuestions = numberOfQuestions;
    this.questions = new Question[this.numberOfQuestions];
    for (int i = 0; i < this.numberOfQuestions; i++) {
        this.questions[i] = new Question(this.difficulty);
    }

}

public void setDifficulty(String difficulty) {
   if (difficulty ==  "easy") {
            this.difficulty = 1;
   } else  if (difficulty ==  "medium"){
            this.difficulty = 2;
   } else  if (difficulty ==  "hard"){
       this.difficulty = 3;
   } else {
       this.difficulty = -1;
   }
}

public String getDifficulty() {
    switch (difficulty) {
        case 1:
            return "easy";
        case 2:
            return "medium";
        case 3:
            return "hard";
        default:
            return "Difficulty not set correctly";
    }
}

public Question getQuestionInstance(int number) {
    return this.questions[number];
}
public String getQuestion(int number) {
    return this.questions[number].QUESTION;
}

public int getOptionA(int number) {
    return this.questions[number].OPTA;
}

public int getOptionB(int number) {
    return this.questions[number].OPTB;
}

public int getOptionC(int number) {
    return this.questions[number].OPTC;
}

public int getAnswer(int number) {
    return this.questions[number].ANSWER;
}

class Question {

    private int firstNumber;
    private int secondNumber;
    private char sign;
    private String QUESTION;
    private int OPTA;
    private int OPTB;
    private int OPTC;
    private int ANSWER;
    private int difficulty;
    private Random rand;

    public Question(int difficulty) {
        this.difficulty = difficulty;
        this.rand = new Random();
        this.firstNumber = getRandomNumber();
        this.secondNumber = getRandomNumber();
        this.sign = getRandomSign();
        this.ANSWER = calculateAnswer();
        initializeOptions();
        this.QUESTION = this.firstNumber + " " + this.sign + " " + this.secondNumber + " = ";
    }

    public String getQuestion() {
        return this.QUESTION;
    }

    public int getOptionA() {
        return this.OPTA;
    }

    public int getOptionB() {
        return this.OPTB;
    }

    public int getOptionC() {
        return this.OPTC;
    }

    public int getAnswer() {
        return this.ANSWER;
    }

    private void initializeOptions() {
        int number = this.rand.nextInt(3) + 1;

        switch (number) {
            case 1:
                this.OPTA = this.ANSWER;
                this.OPTB = (int) Math.floor(this.ANSWER - this.ANSWER / 100.0 * (this.rand.nextInt(81) + 20));
                this.OPTC = (int) Math.floor(this.ANSWER + this.ANSWER / 100.0 * (this.rand.nextInt(81) + 20));
                break;
            case 2:
                this.OPTA = (int) Math.floor(this.ANSWER - this.ANSWER / 100.0 * (this.rand.nextInt(81) + 20));
                this.OPTB = this.ANSWER;
                this.OPTC = (int) Math.floor(this.ANSWER + this.ANSWER / 100.0 * (this.rand.nextInt(81) + 20));
                break;
            case 3:
                this.OPTA = (int) Math.floor(this.ANSWER - this.ANSWER / 100.0 * (this.rand.nextInt(81) + 20));
                this.OPTB = (int) Math.floor(this.ANSWER + this.ANSWER / 100.0 * (this.rand.nextInt(81) + 20));
                this.OPTC = this.ANSWER;
                break;
        }

    }

    private int calculateAnswer() {
        int answer = 0;
        switch (this.sign) {
            case '+':
                answer = this.firstNumber + this.secondNumber;
                break;
            case '-':
                answer = this.firstNumber - this.secondNumber;
                break;
            case '*':
                answer = this.firstNumber * this.secondNumber;
                break;
            case '/':
                answer = this.firstNumber / this.secondNumber;
                break;
        }

        return answer;
    }

    private int getRandomNumber() {
        int number;
        if (this.difficulty == 1) {
            //number = 1 +  Math.random()*100;
            number = this.rand.nextInt(100) + 1;
        } else if (this.difficulty == 2) {
            //number = 1 +  Math.random()*1000;
            number = this.rand.nextInt(1000) + 1;
        } else {
            //number = 1 +  Math.random()*1000;
            number = this.rand.nextInt(1000) + 1;
        }
        return number;
    }

    private char getRandomSign() {
        int number;
        char sign;
        //easy
        if (this.difficulty == 1) {
            number = this.rand.nextInt(2) + 1;
            sign = convertNumberToSign(number);
            //medium
        } else if (this.difficulty == 2) {
            if (this.firstNumber > 10 && this.secondNumber > 10) {
                number = this.rand.nextInt(2) + 1;
                sign = convertNumberToSign(number);
            } else {
                number = this.rand.nextInt(3) + 1;
                sign = convertNumberToSign(number);
            }
            //hard
        } else {
            if (this.firstNumber / this.secondNumber == (int) (this.firstNumber / this.secondNumber)) {
                number = this.rand.nextInt(4) + 1;
                sign = convertNumberToSign(number);
            } else {
                number = this.rand.nextInt(3) + 1;
                sign = convertNumberToSign(number);
            }
        }
        return sign;
    }

    private char convertNumberToSign(int number) {
        if (number == 1) {
            return '+';
        } else if (number == 2) {
            return '-';
        } else if (number == 3) {
            return '*';
        } else {
            return '/';
        }
    }

}

}

package com.example.quizapp;

import com.example.quizapp.R;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;

public class QuizActivity extends Activity 
{
Quiz quiz;
RadioButton rb1, rb2, rb3, rb4, rb5, rb6;
Button buttonOK;
String ans;
int num = 0;

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_ui);
    rb1=(RadioButton)findViewById(R.id.radio3);
    rb2=(RadioButton)findViewById(R.id.radio4);
    rb3=(RadioButton)findViewById(R.id.radio5);
    rb4=(RadioButton)findViewById(R.id.radio6);
    rb5=(RadioButton)findViewById(R.id.radio7);
    rb6=(RadioButton)findViewById(R.id.radio8);

    buttonOK=(Button)findViewById(R.id.button2);        
    buttonOK.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            RadioGroup group2=(RadioGroup)findViewById(R.id.radioGroup3);
            RadioButton answer2=(RadioButton)findViewById(group2.getCheckedRadioButtonId());
            if (answer2.equals(rb4))
            {
                num = 5;
            }
            else if (answer2.equals(rb5))
            {
                num = 10;
            }
            else
            {
                num = 15;
            }

            RadioGroup group1=(RadioGroup)findViewById(R.id.radioGroup2);
            RadioButton answer1=(RadioButton)findViewById(group1.getCheckedRadioButtonId());
            if (answer1.equals(rb1))
            {
                ans = "easy";
            }
            else if (answer1.equals(rb2))
            {
                ans = "medium";
            }
            else
            {
                ans = "hard";
            }


        }
    });

    Intent intent = new Intent(QuizActivity.this, QuestActivity.class);
            intent.putExtra("answer", ans);
            intent.putExtra("question", num);
            QuizActivity.this.startActivity(intent);
            finish();


}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_ui, menu);
    return true;
}
}

package com.example.quizapp;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;

public class QuestActivity extends Activity
{
Quiz quiz;
int score = 0;
int qid = 0;
Quiz.Question currentQuest;
TextView textQuestion;
RadioButton rba, rbb, rbc;
Button buttonNext;
    String answer = null;
    int numOfQuestion = 0;

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
setContentView(R.layout.activity_quiz);
    Intent intent= getIntent();
    if (intent != null)
    {
answer=intent.getStringExtra("answer");
numOfQuestion=intent.getIntExtra("question", 0);
    }


    quiz= new Quiz(answer,numOfQuestion);
currentQuest=quiz.getQuestionInstance(qid);
textQuestion=(TextView)findViewById(R.id.textView1);
rba=(RadioButton)findViewById(R.id.radio0);
rbb=(RadioButton)findViewById(R.id.radio1);
rbc=(RadioButton)findViewById(R.id.radio2);
buttonNext=(Button)findViewById(R.id.button1);
setQuestionView();

buttonNext.setOnClickListener(new View.OnClickListener() 
{       
    @Override
    public void onClick(View v) 
    {
        RadioGroup group=(RadioGroup)findViewById(R.id.radioGroup1);
        RadioButton answer=(RadioButton)findViewById(group.getCheckedRadioButtonId());
        Log.d("yourans", currentQuest.getAnswer() + " " + answer.getText());
           if(Integer.toString(currentQuest.getAnswer()).equals(answer.getText()) )
        {
            score++;
            Log.d("score", "Your score" + score);
        }
        if(qid<numOfQuestion)
        {                   
            currentQuest=quiz.getQuestionInstance(qid);
            setQuestionView();
        }else
        {
            Intent intent = new Intent(QuestActivity.this, ResultActivity.class);
            Bundle b = new Bundle();
            b.putInt("score", score);
            intent.putExtras(b);
            startActivity(intent);
            finish();
        }
    }
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_quiz, menu);
return true;
}



private void setQuestionView()
{
   textQuestion.setText(currentQuest.getQuestion());
   rba.setText(Integer.toString(currentQuest.getOptionA()));
   rbb.setText(Integer.toString(currentQuest.getOptionB()));
   rbc.setText(Integer.toString(currentQuest.getOptionC()));
qid++;
}
}

package com.example.quizapp;
import com.example.quizapp.R;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.RatingBar;
import android.widget.TextView;

public class ResultActivity extends Activity 
{
@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_result);
    //access rating bar
    RatingBar rbar=(RatingBar)findViewById(R.id.ratingBar1); 
        rbar.setNumStars(5);
    rbar.setStepSize(0.5f);
        TextView t=(TextView)findViewById(R.id.textResult);
        //get and display the score
    Bundle b = getIntent().getExtras();
        int score= b.getInt("score");
        rbar.setRating(score);

        switch (score)
        {
    case 1:
        case 2: t.setText("Better Luck Next Time!");
        break;
    case 3:
    case 4:t.setText("Quite average");
    break;
    case 5:t.setText("Congratulations !");
    break;
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) 
{
    getMenuInflater().inflate(R.menu.activity_result, menu);
    return true;
}
}

Edited: I added AndroidManifest.xml

编辑:我AndroidManifest.xml补充道

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.quizapp"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="14"
    android:targetSdkVersion="17" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.example.quizapp.QuizActivity"
        android:label="@string/quiz_app" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.example.quizapp.QuestActivity"
        android:label="@string/title_activity_quiz" >
    </activity>
    <activity
        android:name="com.example.quizapp.ResultActivity"
        android:label="@string/title_activity_result" >
    </activity>
</application>

</manifest>

Edited: Updated application as suggested, this error pops up and app crashes:

编辑:按建议更新应用程序,弹出错误,程序崩溃:

10-23 10:10:32.368: E/AndroidRuntime(827): FATAL EXCEPTION: main
10-23 10:10:32.368: E/AndroidRuntime(827): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.quizapp/com.example.quizapp.QuestActivity}: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
10-23 10:10:32.368: E/AndroidRuntime(827):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
10-23 10:10:32.368: E/AndroidRuntime(827):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
10-23 10:10:32.368: E/AndroidRuntime(827):  at android.app.ActivityThread.access$600(ActivityThread.java:141)
10-23 10:10:32.368: E/AndroidRuntime(827):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
10-23 10:10:32.368: E/AndroidRuntime(827):  at    android.os.Handler.dispatchMessage(Handler.java:99)
10-23 10:10:32.368: E/AndroidRuntime(827):  at android.os.Looper.loop(Looper.java:137)
10-23 10:10:32.368: E/AndroidRuntime(827):  at android.app.ActivityThread.main(ActivityThread.java:5103)
10-23 10:10:32.368: E/AndroidRuntime(827):  at java.lang.reflect.Method.invokeNative(Native Method)
10-23 10:10:32.368: E/AndroidRuntime(827):  at java.lang.reflect.Method.invoke(Method.java:525)
10-23 10:10:32.368: E/AndroidRuntime(827):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
10-23 10:10:32.368: E/AndroidRuntime(827):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-23 10:10:32.368: E/AndroidRuntime(827):  at dalvik.system.NativeStart.main(Native Method)
10-23 10:10:32.368: E/AndroidRuntime(827): Caused by: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
10-23 10:10:32.368: E/AndroidRuntime(827):  at com.example.quizapp.Quiz.getQuestionInstance(Quiz.java:45)
10-23 10:10:32.368: E/AndroidRuntime(827):  at com.example.quizapp.QuestActivity.onCreate(QuestActivity.java:52)
10-23 10:10:32.368: E/AndroidRuntime(827):  at android.app.Activity.performCreate(Activity.java:5133)
10-23 10:10:32.368: E/AndroidRuntime(827):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
10-23 10:10:32.368: E/AndroidRuntime(827):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
10-23 10:10:32.368: E/AndroidRuntime(827):  ... 11 more

3 个解决方案

#1


2  

You told Android that you have an Activity named QuizApp as your Main Activity, by saying

你告诉Android你有一个名为QuizApp的活动作为你的主要活动

 <activity
        android:name="com.example.quizapp.QuizApp"
        android:label="@string/quiz_app" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
 </activity>

but you never implemented it. Android looks for that activity in the package, com.example.quizapp, but it fails to find it, as we can see from the ClassNotFoundException in the LogCat messages,

但是你从来没有实现过。Android在包中查找该活动,com.example。quizapp,但是没有找到,从LogCat的ClassNotFoundException,

10-21 06:31:26.907: E/AndroidRuntime(816): ... java.lang.ClassNotFoundException: Didn't find class "com.example.quizapp.QuizApp"...

You must implement your QuizApp Activity.

你必须实现你的QuizApp活动。

#2


1  

check this in manifest:

检查这个清单:

android:name="com.example.quizapp.QuizApp"

android:name = " com.example.quizapp.QuizApp "

Have you this activity "QuizApp"?

你有这个活动“QuizApp”吗?

change in manifest to:

改变清单:

android:name="com.example.quizapp.QuizActivity"

HTH.

HTH。

#3


0  

Its look like you have package name mismatch error in Manifest file. Correct it as

看起来您在清单文件中有包名不匹配错误。正确的是

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.quizapp"
   ...
</manifest>

And don't forget, you can specify the fully qualified name for each Activity i.e.

不要忘记,您可以为每个活动指定完全限定的名称。

           <activity
            android:name="com.example.quizapp.Activity_name"
            ...>
            </activity>

Edit As per Requirement

按要求编辑

package com.example.quizapp;

import com.example.quizapp.R;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;

public class QuizActivity extends Activity 
{
Quiz quiz;
RadioButton rb1, rb2, rb3, rb4, rb5, rb6;
Button buttonOK;
String ans;
int num = 0;

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_ui);
    rb1=(RadioButton)findViewById(R.id.radio3);
    rb2=(RadioButton)findViewById(R.id.radio4);
    rb3=(RadioButton)findViewById(R.id.radio5);
    rb4=(RadioButton)findViewById(R.id.radio6);
    rb5=(RadioButton)findViewById(R.id.radio7);
    rb6=(RadioButton)findViewById(R.id.radio8);

    buttonOK=(Button)findViewById(R.id.button2);        
    buttonOK.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            RadioGroup group2=(RadioGroup)findViewById(R.id.radioGroup3);
            RadioButton answer2=(RadioButton)findViewById(group2.getCheckedRadioButtonId());
            if (answer2.equals(rb4))
            {
                num = 5;
            }
            else if (answer2.equals(rb5))
            {
                num = 10;
            }
            else
            {
                num = 15;
            }

            RadioGroup group1=(RadioGroup)findViewById(R.id.radioGroup2);
            RadioButton answer1=(RadioButton)findViewById(group1.getCheckedRadioButtonId());
            if (answer1.equals(rb1))
            {
                ans = "easy";
            }
            else if (answer1.equals(rb2))
            {
                ans = "medium";
            }
            else
            {
                ans = "hard";
            }


        }
    });

    //*********Edit

    //Intent intent = new Intent(QuizActivity.this, QuestActivity.class);
    //QuizActivity.this.startActivity(intent);
    //finish();

    Intent intent = new Intent(QuizActivity.this, QuestActivity.class);
    intent.putExtra("answer", ans);
    intent.putExtra("question", num);
    QuizActivity.this.startActivity(intent);
    finish();

    //*******Edit

}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_ui, menu);
    return true;
}
}

Here Next Activity

这里的下一个活动

package com.example.quizapp;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;

public class QuestActivity extends Activity
{
Quiz quiz;
int score = 0;
int qid = 0;
Quiz.Question currentQuest;
TextView textQuestion;
RadioButton rba, rbb, rbc;
Button buttonNext;

QuizActivity qa = new QuizActivity();
String ans = qa.ans;
int num = qa.num;

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
setContentView(R.layout.activity_quiz);

//*********Edit

Intent intent= getActivity().getIntent();
String answer=intent.getStringExtra("answer");
int numOfQuestion=intent.getIntExtra("question", 0);

//quiz= new Quiz(ans, num);

quiz= new Quiz(answer,numOfQuestion);

//*******

currentQuest=quiz.getQuestionInstance(qid);
textQuestion=(TextView)findViewById(R.id.textView1);
rba=(RadioButton)findViewById(R.id.radio0);
rbb=(RadioButton)findViewById(R.id.radio1);
rbc=(RadioButton)findViewById(R.id.radio2);
buttonNext=(Button)findViewById(R.id.button1);
setQuestionView();

buttonNext.setOnClickListener(new View.OnClickListener() 
{       
    @Override
    public void onClick(View v) 
    {
        RadioGroup group=(RadioGroup)findViewById(R.id.radioGroup1);
        RadioButton answer=(RadioButton)findViewById(group.getCheckedRadioButtonId());
        Log.d("yourans", currentQuest.getAnswer() + " " + answer.getText());
           if(Integer.toString(currentQuest.getAnswer()).equals(answer.getText()) )
        {
            score++;
            Log.d("score", "Your score" + score);
        }
        if(qid<num)
        {                   
            currentQuest=quiz.getQuestionInstance(qid);
            setQuestionView();
        }else
        {
            Intent intent = new Intent(QuestActivity.this, ResultActivity.class);
            Bundle b = new Bundle();
            b.putInt("score", score);
            intent.putExtras(b);
            startActivity(intent);
            finish();
        }
    }
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_quiz, menu);
return true;
}



private void setQuestionView()
{
   textQuestion.setText(currentQuest.getQuestion());
   rba.setText(Integer.toString(currentQuest.getOptionA()));
   rbb.setText(Integer.toString(currentQuest.getOptionB()));
   rbc.setText(Integer.toString(currentQuest.getOptionC()));
qid++;
}
}

#1


2  

You told Android that you have an Activity named QuizApp as your Main Activity, by saying

你告诉Android你有一个名为QuizApp的活动作为你的主要活动

 <activity
        android:name="com.example.quizapp.QuizApp"
        android:label="@string/quiz_app" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
 </activity>

but you never implemented it. Android looks for that activity in the package, com.example.quizapp, but it fails to find it, as we can see from the ClassNotFoundException in the LogCat messages,

但是你从来没有实现过。Android在包中查找该活动,com.example。quizapp,但是没有找到,从LogCat的ClassNotFoundException,

10-21 06:31:26.907: E/AndroidRuntime(816): ... java.lang.ClassNotFoundException: Didn't find class "com.example.quizapp.QuizApp"...

You must implement your QuizApp Activity.

你必须实现你的QuizApp活动。

#2


1  

check this in manifest:

检查这个清单:

android:name="com.example.quizapp.QuizApp"

android:name = " com.example.quizapp.QuizApp "

Have you this activity "QuizApp"?

你有这个活动“QuizApp”吗?

change in manifest to:

改变清单:

android:name="com.example.quizapp.QuizActivity"

HTH.

HTH。

#3


0  

Its look like you have package name mismatch error in Manifest file. Correct it as

看起来您在清单文件中有包名不匹配错误。正确的是

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.quizapp"
   ...
</manifest>

And don't forget, you can specify the fully qualified name for each Activity i.e.

不要忘记,您可以为每个活动指定完全限定的名称。

           <activity
            android:name="com.example.quizapp.Activity_name"
            ...>
            </activity>

Edit As per Requirement

按要求编辑

package com.example.quizapp;

import com.example.quizapp.R;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;

public class QuizActivity extends Activity 
{
Quiz quiz;
RadioButton rb1, rb2, rb3, rb4, rb5, rb6;
Button buttonOK;
String ans;
int num = 0;

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_ui);
    rb1=(RadioButton)findViewById(R.id.radio3);
    rb2=(RadioButton)findViewById(R.id.radio4);
    rb3=(RadioButton)findViewById(R.id.radio5);
    rb4=(RadioButton)findViewById(R.id.radio6);
    rb5=(RadioButton)findViewById(R.id.radio7);
    rb6=(RadioButton)findViewById(R.id.radio8);

    buttonOK=(Button)findViewById(R.id.button2);        
    buttonOK.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            RadioGroup group2=(RadioGroup)findViewById(R.id.radioGroup3);
            RadioButton answer2=(RadioButton)findViewById(group2.getCheckedRadioButtonId());
            if (answer2.equals(rb4))
            {
                num = 5;
            }
            else if (answer2.equals(rb5))
            {
                num = 10;
            }
            else
            {
                num = 15;
            }

            RadioGroup group1=(RadioGroup)findViewById(R.id.radioGroup2);
            RadioButton answer1=(RadioButton)findViewById(group1.getCheckedRadioButtonId());
            if (answer1.equals(rb1))
            {
                ans = "easy";
            }
            else if (answer1.equals(rb2))
            {
                ans = "medium";
            }
            else
            {
                ans = "hard";
            }


        }
    });

    //*********Edit

    //Intent intent = new Intent(QuizActivity.this, QuestActivity.class);
    //QuizActivity.this.startActivity(intent);
    //finish();

    Intent intent = new Intent(QuizActivity.this, QuestActivity.class);
    intent.putExtra("answer", ans);
    intent.putExtra("question", num);
    QuizActivity.this.startActivity(intent);
    finish();

    //*******Edit

}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_ui, menu);
    return true;
}
}

Here Next Activity

这里的下一个活动

package com.example.quizapp;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;

public class QuestActivity extends Activity
{
Quiz quiz;
int score = 0;
int qid = 0;
Quiz.Question currentQuest;
TextView textQuestion;
RadioButton rba, rbb, rbc;
Button buttonNext;

QuizActivity qa = new QuizActivity();
String ans = qa.ans;
int num = qa.num;

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
setContentView(R.layout.activity_quiz);

//*********Edit

Intent intent= getActivity().getIntent();
String answer=intent.getStringExtra("answer");
int numOfQuestion=intent.getIntExtra("question", 0);

//quiz= new Quiz(ans, num);

quiz= new Quiz(answer,numOfQuestion);

//*******

currentQuest=quiz.getQuestionInstance(qid);
textQuestion=(TextView)findViewById(R.id.textView1);
rba=(RadioButton)findViewById(R.id.radio0);
rbb=(RadioButton)findViewById(R.id.radio1);
rbc=(RadioButton)findViewById(R.id.radio2);
buttonNext=(Button)findViewById(R.id.button1);
setQuestionView();

buttonNext.setOnClickListener(new View.OnClickListener() 
{       
    @Override
    public void onClick(View v) 
    {
        RadioGroup group=(RadioGroup)findViewById(R.id.radioGroup1);
        RadioButton answer=(RadioButton)findViewById(group.getCheckedRadioButtonId());
        Log.d("yourans", currentQuest.getAnswer() + " " + answer.getText());
           if(Integer.toString(currentQuest.getAnswer()).equals(answer.getText()) )
        {
            score++;
            Log.d("score", "Your score" + score);
        }
        if(qid<num)
        {                   
            currentQuest=quiz.getQuestionInstance(qid);
            setQuestionView();
        }else
        {
            Intent intent = new Intent(QuestActivity.this, ResultActivity.class);
            Bundle b = new Bundle();
            b.putInt("score", score);
            intent.putExtras(b);
            startActivity(intent);
            finish();
        }
    }
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_quiz, menu);
return true;
}



private void setQuestionView()
{
   textQuestion.setText(currentQuest.getQuestion());
   rba.setText(Integer.toString(currentQuest.getOptionA()));
   rbb.setText(Integer.toString(currentQuest.getOptionB()));
   rbc.setText(Integer.toString(currentQuest.getOptionC()));
qid++;
}
}