好的,我又来了。还在学习。现在我需要在 2 个 Activity 中来回传递整数值。第一个 Activity 将计数器值传递给第二个 Activity (跟踪玩家统计数据)。第二个 Activity 能够将统计数据重置为零,从而将数字传回。但我就是无法理解它。这是我到目前为止所拥有的...
第一个 Activity (主要):
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_settings:
Intent i = new Intent(this, Options.class);
Bundle counters = new Bundle();
counters.putInt("plWin", plWin);
counters.putInt("plLoss", plLoss);
counters.putInt("plDraw", plDraw);
i.putExtras(counters);
startActivityForResult(i, ?);
return true;
请填写“?”
第二个 Activity (选项):
public void onBackPressed() {
super.onBackPressed();
Intent i = new Intent();
Bundle counters = new Bundle();
counters.putInt("Wins", wins);
counters.putInt("Losses", losses);
counters.putInt("Draws", draws);
i.putExtras(counters);
setResult(?, i);
finish();
}
同样,无法弄清楚“?”。
回到我的第一个 Activity ,我不知道之后会发生什么:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
渴望弄清楚这一点。提前致谢。
最佳答案
这样做
startActivityForResult(i, 100);
对于设置结果
setResult(RESULT_OK);
您可以使用 setresult 进行更高级的结果发送,例如
intent = new Intent();
intent.putExtra("key", "I am done");
setResult(1001, intent);
并在 onActivityResult 中
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == 100)
{
String key = data.getStringExtra("key");
if(resultcode == 1001 && key!= null && key.equals("I am done"){
//do something
}else{
//do something else
}
}
}
你不必使用 setResult,如果你需要检查的只是你是否从 Activity 中返回,那么不要设置它,也不要检查 onActivityResult
关于android - 真的没有得到 setResult 和 onActivityResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12233106/