真的没有得到setResult和onActivityResult

时间:2012-09-02 03:00:31

标签: android android-intent

好的,我在这里。还在学习。现在我需要从2个活动来回传递整数值。第一个活动将计数器值传递给第二个(跟踪玩家统计数据)。第二个活动能够将统计数据重置为零,从而将数字传回。但我无法理解它。这是我到目前为止所拥有的......

第一项活动(主要):

@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;

请填写“?”

第二项活动(选项):

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();
}

再次,无法弄清楚“?”。

回到我的第一个活动,我不知道接下来会发生什么:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

渴望弄明白这一点。提前谢谢。

1 个答案:

答案 0 :(得分:12)

这样做

startActivityForResult(i, 100);  

对于setResult

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,如果你需要检查的是你是否从活动中返回然后不设置它并且不要检查onActivityResult