通过bundle传递int数据



我目前正在进行测验application,在该测验中,我需要在每个测验会话后检查回答的问题。因此,正在将尝试作为INT值的问题数量传递给下一个活动。

因此,Am Am向前和向后循环我的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);

result actactivity.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);

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

尝试此代码。

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,无论您是否在捆绑中放置正确的值。

使用此

在您的发件人类中

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

在您的reciver类中

Bundle bundle = getIntent().getExtras();
//Extract the data…
String venName = bundle.getInt("DATA");

我认为您应该这样做。

class DataStore{/*New class DataStore*/
public static int quizNumber=0;
}

/ MainActivity /

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

/审查/

intValue=DataStore.quizNumber;

最新更新