2017-06-06 56 views
0

主要方法按钮的onClick调用类:通过一个Intent

public void onClick(View v) { 
       Intent numbers = new Intent(MainActivity.this, Questions.class); 
       numbers.putExtra("randomNumber", rand); 
       startActivity(numbers); 
       Intent numbertoAnswer = new Intent(MainActivity.this, Answers.class); 
       numbertoAnswer.putExtra("randomnumber", rand); 
       startActivity(numbertoAnswer); 
      } 
     }); 

后运行此代码的问题类的onCreate是好的,但答案类不运行。我用同一个按钮来调用两者的意图。我最终只是试图调用问题类中导致错误的类中的方法。有意图的问题还是在Answers类中的代码有问题?

问题

protected void onCreate(@Nullable Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.game_view); 
      int questionNumber = getIntent().getIntExtra("randomNumber", 1); 
      question(questionNumber); 

      TextView questiontv = (TextView) findViewById(R.id.Question); 
      questiontv.setText(question(questionNumber)); 

      Answers answers = new Answers(); 
      answers.createQuestions(); 
      answers.buttonTextGetter(); 
} 

答案:

public class Answers extends Activity { 

    Button choice1 = (Button) findViewById(R.id.answer_choice1); 
    Button choice2 = (Button) findViewById(R.id.answer_choice2); 
    Button choice3 = (Button) findViewById(R.id.answer_choice3); 
    Button choice4 = (Button) findViewById(R.id.answer_choice4); 
    int questionNumber = getIntent().getIntExtra("randomnumber", 1); 
    Random rand = new Random(); 
    int randomCorrectButton = rand.nextInt(3) + 1; 

    public void createQuestions() { 

     AnswerPeople(questionNumber); 
     if (answer == null) { 
      AnswerNumbers(questionNumber); 
     } 
     switch (randomCorrectButton) { 
      case 1: 
       choice1.setText(answer); 
       break; 
      case 2: 
       choice2.setText(answer); 
       break; 
      case 3: 
       choice3.setText(answer); 
       break; 
      case 4: 
       choice4.setText(answer); 
       break; 
     } 
    } 
     String AnswerChoice1 = randomAnswerButton1(randomCorrectButton, questionNumber, rand); 
     String AnswerChoice2 = randomAnswerButton2(randomCorrectButton, questionNumber, rand); 
     String AnswerChoice3 = randomAnswerButton3(randomCorrectButton, questionNumber, rand); 
     String AnswerChoice4 = randomAnswerButton4(randomCorrectButton, questionNumber, rand); 

     public void buttonTextGetter(){ 


     randomAnswerButton1(randomCorrectButton, questionNumber, rand); 
     randomAnswerButton2(randomCorrectButton, questionNumber, rand); 
     randomAnswerButton3(randomCorrectButton, questionNumber, rand); 
     randomAnswerButton4(randomCorrectButton, questionNumber, rand); 

     checkForRepeat(AnswerChoice1, AnswerChoice2, AnswerChoice3, AnswerChoice4, randomCorrectButton, questionNumber, rand); 

     if (randomCorrectButton != 1) { 
      choice1.setText(AnswerChoice1); 
     } else if (randomCorrectButton != 2) { 
      choice2.setText(AnswerChoice2); 
     } else if (randomCorrectButton != 3) { 
      choice3.setText(AnswerChoice3); 
     } else if (randomCorrectButton != 4) { 
      choice4.setText(AnswerChoice4); 
     } 
     } 



    public void checkForRepeat(String AnswerChoice1,String AnswerChoice2, String AnswerChoice3, String AnswerChoice4, 
           int randomCorrectButton, int questionNumber, Random rand) { 
     if(AnswerChoice1 == AnswerChoice2 || AnswerChoice1 == AnswerChoice3 || AnswerChoice1 == 
       AnswerChoice4 || AnswerChoice2 == AnswerChoice3 || AnswerChoice2 == AnswerChoice4 || AnswerChoice3 == AnswerChoice4) { 
      randomAnswerButton1(randomCorrectButton, questionNumber, rand); 
      randomAnswerButton2(randomCorrectButton, questionNumber, rand); 
      randomAnswerButton3(randomCorrectButton, questionNumber, rand); 
     } 
    } 

    public String randomAnswerButton1(int randomCorrectButton, int questionNumber, Random rand) { 
     if (randomCorrectButton != 1) { 
      int answernum = rand.nextInt(19) + 1; 
      if (answernum != questionNumber) 
       AnswerPeople(answernum); 
      if (answer == null) { 
       AnswerNumbers(answernum); 
      } 

     } 
     String AnswerChoice1 = answer; 
     return AnswerChoice1; 
    } 

    public String randomAnswerButton2(int randomCorrectButton, int questionNumber, Random rand) { 
     if (randomCorrectButton != 2) { 
      int answernum2 = rand.nextInt(19) + 1; 
      if (answernum2 != questionNumber) 
       AnswerPeople(answernum2); 
      if (answer == null) { 
       AnswerNumbers(answernum2); 
      } 
     } 
     String AnswerChoice2 = answer; 
     return AnswerChoice2; 
    } 

    public String randomAnswerButton3(int randomCorrectButton, int questionNumber, Random rand) { 

     if (randomCorrectButton != 3) { 
      int answernum3 = rand.nextInt(19) + 1; 
      if (answernum3 != questionNumber) 
       AnswerPeople(answernum3); 
      if (answer == null) { 
       AnswerNumbers(answernum3); 
      } 
     } 
     String AnswerChoice3 = answer; 
     return AnswerChoice3; 

    } 

    public String randomAnswerButton4(int randomCorrectButton, int questionNumber, Random rand) { 
     if (randomCorrectButton != 4) { 
      int answernum4 = rand.nextInt(19) + 1; 
      if (answernum4 != questionNumber) 
       AnswerPeople(answernum4); 
      if (answer == null) { 
       AnswerNumbers(answernum4); 
      } 

     } 
     String AnswerChoice4 = answer; 
     return AnswerChoice4; 
    } 
+0

你是治疗'Answers'作为一项活动,这只是错在给定的情况下......有没有意见,查找和** **从来没有叫'在'Activity'类中新增了' –

+0

'您的'答案'活动是错误的,您应该像在'问题'中所做的那样使用onCreate方法,并且不能像“Button choice1 =(Button)findViewById(R。 ID。answer_choice1);“在你的”答案“活动中 –

+0

我认为你对于问题和答案都使用单一布局,我是的你不需要'答案'活动,你可以使用问题活动本身来执行这两个操作 –

回答

1

是否有与意图

是一个问题。每次只有一项活动处于活动状态,所以这没有意义。

startActivity(numbers); 
... 
startActivity(numbertoAnswer); 

最后我只是试图调用从类中导致错误

此代码的问题类的方法?

Answers answers = new Answers(); 
answers.createQuestions(); 
answers.buttonTextGetter(); 

权......这可能是错误的,因为findViewById没有上下文,因为你上的活动叫new(提示:不这样做)。

你可能做Answers extends Activity这样你可以调用findViewById,这将不工作,你所期望的方式,大概。

再加上你没有执行onCreate,所以没有任何意见可以找到。

的解答类不运行

这不是真的清楚什么答案类是应该做的,但我不认为你需要一个单独的活动举办4个按钮和计算结果。

您可以在一个活动中将问题和可能的答案放在一个布局中。从其他课程开始之前,你需要做更复杂的事情。

不幸的是,这里没有通用的解决方案。这涉及到如何更好地组织代码。


可能推荐阅读:Activities are not UI elements