我目前正在进行测验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));
}
}
答案 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;