![](/img/trans.png)
[英]How can I pass an int variable value from one activity to overwrite a textview in another activity
[英]How to pass int value on button click from one activity to another?
我是安卓新手。 我正在嘗試制作一個具有類別(歷史,體育......)的測驗應用程序。
數據庫中只有一張表,有60個問題。 前 10 個問題來自第一類(歷史),10 到 20 來自第二類(體育),依此類推。 我希望點擊第一類只會獲取前 10 個問題,點擊第二類只會獲取 10 到 20 個問題。 我們能否解決這個問題,在onclick()
通過 Intent 傳遞一些值並在 if else 中使用該值來限制問題?
問題活動.java
public class QuestionActivity extends Activity {
List<Question> quesList;
int score = 0;
Random r = new Random();
int qid= (r.nextInt(60) + 0);
Question currentQ;
TextView txtQuestion, times, scored;
Button button1, button2, button3;
CounterClass timer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
QuizHelper db = new QuizHelper(this); // my question bank class
quesList = db.getAllQuestions(); // this will fetch all quetonall
questions
currentQ = quesList.get(qid); // the current question
txtQuestion = (TextView) findViewById(R.id.txtQuestion);
// the textview in which the question will be displayed
// the three buttons,
// the idea is to set the text of three buttons with the options from
question bank
button1 = (Button) findViewById(R.id.button1);
button2 = (Button) findViewById(R.id.button2);
button3 = (Button) findViewById(R.id.button3);
// the textview in which score will be displayed
scored = (TextView) findViewById(R.id.score);
// the timer
times = (TextView) findViewById(R.id.timers);
// method which will set the things up for our game
setQuestionView();
times.setText("00:00:30");
// A timer of 30 seconds to play for, with an interval of 1 second
(1000 milliseconds)
timer = new CounterClass(30000, 1000);
timer.start();
// button click listeners
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// passing the button text to other method
// to check whether the anser is correct or not
// same for all three buttons
getAnswer(button1.getText().toString());
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getAnswer(button2.getText().toString());
}
});
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getAnswer(button3.getText().toString());
}
});
}
public void getAnswer(String AnswerString) {
if (currentQ.getANSWER().equals(AnswerString)) {
// if conditions matches increase the int (score) by 1
// and set the text of the score view
score++;
scored.setText("Score : "+ score);
}
else {
// if unlucky start activity and finish the game
timer.cancel();
Intent intent = new Intent(QuestionActivity.this,
ResultActivity.class);
// passing the int value
Bundle b = new Bundle();
b.putInt("score", score); // Your score
intent.putExtras(b); // Put your score to your next
startActivity(intent);
finish();
}
if (qid < 60) {
// if questions are not over then do this
currentQ = quesList.get(qid);
setQuestionView();
} else {
// if over do this
timer.cancel();
Intent intent = new Intent(QuestionActivity.this,
ResultActivity.class);
Bundle b = new Bundle();
b.putInt("score", score); // Your score
intent.putExtras(b); // Put your score to your next
startActivity(intent);
finish();
}
}
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
@SuppressLint("NewApi")
public class CounterClass extends CountDownTimer {
public CounterClass(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
// TODO Auto-generated constructor stub
}
@Override
public void onFinish() {
times.setText("Time is up");
Intent intent = new Intent(QuestionActivity.this,
ResultActivity.class);
timer.cancel();
Bundle b = new Bundle();
b.putInt("score", score); // Your score
intent.putExtras(b); // Put your score to your next
startActivity(intent);
finish();
}
@Override
public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub
long millis = millisUntilFinished;
String hms = String.format(
"%02d:%02d:%02d",
TimeUnit.MILLISECONDS.toHours(millis),
TimeUnit.MILLISECONDS.toMinutes(millis)
- TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS
.toHours(millis)),
TimeUnit.MILLISECONDS.toSeconds(millis)
-
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS
.toMinutes(millis)));
System.out.println(hms);
times.setText(hms);
}
}
private void setQuestionView() {
// the method which will put all things together
txtQuestion.setText(currentQ.getQUESTION());
button1.setText(currentQ.getOPTA());
button2.setText(currentQ.getOPTB());
button3.setText(currentQ.getOPTC());
qid= (r.nextInt(60) + 0);
}
}
主頁.java
public class Home extends Activity {
Button play,about,help,quit;
ImageView img;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
play=(Button)findViewById(R.id.play);
about=(Button)findViewById(R.id.about);
quit=(Button)findViewById(R.id.quit);
help=(Button)findViewById(R.id.help);
play.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent=new Intent(getApplicationContext(),QuestionActivity.class);
startActivity(intent);
finish();
}
});
quit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
about.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(getApplicationContext(),about.class);
startActivity(intent);
}
});
help.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(getApplicationContext(),help.class);
startActivity(intent);
}
});
}
}
在創建 Intent 對象之后但在調用startActivity(intent);
使用: intent.putExtra("name",123);
當您想在其他活動中獲取整數時,只需使用: int foo = getIntent().getIntExtra("name");
在您計算該int
值的活動中,您想轉到另一個Activity
:
int magicVariable = 100;
Intent intent = new Intent(this, OtherClassToGo.class);
intent.putExtra("EXTRA_VALUE_KEY", magicVariable);
startActivity(intent);
在OtherClassToGo
的onCreate()
方法中:
Intent intent = getIntent();
int magicVariableFromOtherClass = intent.getIntExtra("EXTRA_VALUE_KEY");
當然,對於"EXTRA_VALUE_KEY"
您可以使用公共靜態變量,以便“記住”它更容易。
創建變量 int page 和 max,在問題活動中使用setterPage
getterPage
頁面。 並給出 value max = listquestion.size
,然后在按鈕上使用 set 和 get value 頁面
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.