我試圖使用意圖在我的主要活動上設置一個edittext,這相當於我的第二個活動上的textview。第二項活動有一個按鈕,當按下該按鈕時,將啓動一個從10秒開始倒計時的計時器,並且每次按下該按鈕時計數一次。 10秒後,我想要取得textview的值(按下按鈕的次數設置),將主活動的edittext設置爲等於它,然後返回到主活動。一旦計時器用完,如何使用意圖將字符串傳遞給主要活動?
這個想法是,您可以手動輸入主要活動的計數,或使用內置計時器來幫助您計數。
我的應用程序在打開時崩潰,我嘗試了多種方法來做到這一點無濟於事。我認爲這個問題可能源於onCreate對主要活動「尋找」意圖,但它不在那裏,因爲它在按下第二個活動的按鈕時正在運行。
主要活動
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
qtyInput = (EditText) findViewById(R.id.qtyInput);
valueInput = (EditText) findViewById(R.id.valueInput);
resultText = (TextView) findViewById(R.id.resultText);
Intent intent = getIntent();
String clickCount = intent.getExtras().getString("clickCount");
qtyInput.setText(clickCount);
Button calcButton = (Button) findViewById(R.id.calcButton);
calcButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
float qty = Float.parseFloat(qtyInput.getText().toString());
float value = Float.parseFloat(valueInput.getText().toString());
float total = qty * value * 60;
String stringTotal = String.format("%.0f", total);
resultText.setText(stringTotal);
}
});
Button countButton = (Button) findViewById(R.id.countButton);
countButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this, CountActivity.class));
}
});
}
次活動
final TextView countdownTimer = (TextView) findViewById(R.id.countdownTimer);
final CountDownTimer timer = new CountDownTimer(10000,1000) {
public void onTick(long millisUntilFinished) {
int seconds = (int) ((millisUntilFinished/1000));
countdownTimer.setText("Time left: " + millisUntilFinished/1000);
}
public void onFinish() {
String clickCount = countDisplay.getText().toString();
final Intent passCount = new Intent(CountActivity.this, MainActivity.class);
passCount.putExtra("clickCount", clickCount);
startActivity(passCount);
}
};
final TextView countDisplay = (TextView) findViewById(R.id.countDisplay);
int count;
Button countOneButton = (Button) findViewById(R.id.countOneButton);
countOneButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view){
if (clickcount==0) {
timer.start();
clickcount++;
countDisplay.setText("Count: " + clickcount);
}
else {
clickcount++;
countDisplay.setText("Count: " + clickcount);
}
}
});
}
好吧,這是有道理的。我研究瞭如何使用startActivityForResult,並且這似乎是使我爲此工作的最佳方式。我一直在搞這個,我覺得我很接近,但是當計時器用完時它已經崩潰了,它應該回到主要活動。我將returnIntent的代碼放入倒數計時器內的onFinish代碼塊中。這是正確的安置嗎? – gah4716
另外,你如何重寫onActivityResult? – gah4716
@ gah4716:是的,從'onFinish'調用setResult –