2017-12-08 13 views
0

私は現在、クイズで作業しています。これにより、各クイズセッション後に回答した質問を確認する必要があります。したがって、試行された質問の数を、バンドルを持つint値として次のアクティビティに渡しています。バンドルを介してintデータを渡す

したがって、インデックスの制限が前のactivityから渡されたintである質問の私のarrayに対して、前後にループしています。しかし、正しくループしていないので、何か問題があります。どのように私はこれをラウンドを得るのですか?

質問クラス

class Question{ 
    // array of questions 
    private String mQuestions [] = { 
      "", 
      "", 
      "", 
      "", 
      "", 
      "", 
      "", 
      "", 
      "", 
      "", 
      "", 
      "", 
    // method returns number of questions 
    int getLength(){ 
     return mQuestions.length; 
    } 

    // method returns question from array textQuestions[] based on array index 
    String getQuestion(int a) { 
     return mQuestions[a]; 
    } 
} 

MainActivity.java

Intent intent = new Intent(MainActivity.this, ResultsActivity.class); 
        intent.putExtra("quizNumber", mquizNumber); 
startActivity(intent); 

ResultsActivity.java

Intent intent = new Intent(ResultsActivity.this, ReviewActivity.class); 
       Bundle exBundle= getIntent().getExtras(); 
       int intValue= 0; 
       if (exBundle != null) { 
        intValue = exBundle.getInt("quizNumber"); 
       } 
       intent.putExtra("quizNumber", intValue); 
       startActivity(intent); 

ReviewActivity.java

public class ReviewActivity extends AppCompatActivity { 
    private Question mQuestionLibrary = new Question(); 
private TextView mQuestionText; 
private int intValue; // int value from quiz activity to be passed here 
    private int mQuestionNumber = 1; // current question number 
//navigation buttons for looping through array 
    private Button mPrevious; 
    private Button mNext; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     } 
     setContentView(R.layout.activity_beginner_review); 
     mQuestionText = (TextView) findViewById(R.id.txtQuestion); 
     //setting buttons 
     mPrevious = (Button) findViewById(R.id.previous); 
     mNext = (Button) findViewById(R.id.next); 
     // retrieve the number of attempted questions int value from quizActivity in Bundle 
     Bundle exBundle= getIntent().getExtras(); 
     intValue = 0; 
     if (exBundle != null) { 
      intValue = exBundle.getInt("quizNumber"); 
     } 
     mNext.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       updateQuestion(true); 
      } 
     }); 
     mPrevious.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       updateQuestion(false); 
      } 
     }); 
    } 
// logic for looping through array. 
    private void updateQuestion(boolean forward) { 
     animateAnswerButton(); 
     if(forward && mQuestionNumber < intValue //using mQuestion.getLength() works for looping full length of array but i want to check against int data) 
      mQuestionNumber++; 
     else if (mQuestionNumber>0) 
      mQuestionNumber--; 
     mQuestionText.setText(mQuestionLibrary.getQuestion(mQuestionNumber)); 
    } 

} 
+0

? – mac229

+1

意図インテント=新しいインテント(MainActivity.this、ResultsActivity.class); intent.putExtra( "quizNumber"、mquizNumber); – Chukwuma

答えて

0

は、このコードを試してみてください。

Intent intent = getIntent(); 
      Bundle extras = intent.getExtras(); 
      if (extras != null){ 
       if(extras.containsKey("quizNumber")) { 



          intValue=getIntent().getExtras().getInt("quizNumber") 

        } 
       } 

    updateQuestion(true,intValue); 

or 

    updateQuestion(false,intValue); 



private void updateQuestion(boolean forward, int intValue) { 
      animateAnswerButton(); 
// also print toast of int value for checking value 
      if(forward && mQuestionNumber < intValue //using mQuestion.getLength() works for looping full length of array but i want to check against int data) 
       mQuestionNumber++; 
      else if (mQuestionNumber>0) 
       mQuestionNumber--; 
      mQuestionText.setText(mQuestionLibrary.getQuestion(mQuestionNumber)); 
     } 

また、あなたがバンドルに正しい値を入れたりしていないかどうかMainActivityであなたのmquizNumberトーストまたはログ。あなたのreciverクラスで

+0

int値を正しく取得しています。しかし、あなたのコードでさえ、それは正しくループしません。私は、渡されたint値の長さにループを制限したい。 – Chukwuma

+0

mQuestionLibraryとは何ですか? –

+0

ReviewActivity – Chukwuma

0

使用この

あなたの送信者クラスで

//Create the bundle 
Bundle bundle = new Bundle(); 
//Add your data from getFactualResults method to bundle 
bundle.putInt("DATA", value); 
//Add the bundle to the intent 
i.putExtras(bundle); 
startActivity(i); 

Bundle bundle = getIntent().getExtras(); 

//Extract the data… 

String venName = bundle.getInt("DATA"); 
+0

私は実際にintデータを正しく取得しています。私の問題は、配列をループするときにint値と照合するロジックです。 – Chukwuma

0

私はあなたがこれを行うべきだと思います。

class DataStore{/*New class DataStore*/ 

public static int quizNumber=0; 

} 

/Mainactivity/

DataStore.quizNumber=mquizNumber; 
startActivity(MainActivity.this, ResultsActivity.class); 

/あなたが意図にデータを置けばいいのかReviewActivity/

intValue=DataStore.quizNumber; 
+0

は同じ問題を抱えています – Chukwuma

関連する問題