通过bundle传递int数据

时间:2017-12-08 08:44:34

标签: java android

我目前正在进行测验application,我需要在每次测验会议后审核已回答的问题。因此,我将尝试的问题数量作为带有捆绑的int值传递给下一个活动。

所以,我正在针对我的array个问题循环前进和后退,其中索引限制是从前一个activity传递的int。但是,由于没有正确循环,我遇到了一些麻烦。我如何绕过这个?

问题类

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));
    }

}

3 个答案:

答案 0 :(得分: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));
        }

同时在mquizNumber中祝贺或记录您的MainActivity,无论您是否正确使用捆绑值。

答案 1 :(得分: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");

答案 2 :(得分:0)

我认为你应该这样做。

class DataStore{/*New class DataStore*/

public static int quizNumber=0;

}

/ Mainactivity /

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

/ ReviewActivity /

intValue=DataStore.quizNumber;