onActivityResult未被调用

时间:2014-07-05 23:59:30

标签: android android-intent android-activity onactivityresult

第一个活动(EditCycle)调用第二个活动(EditChooseLists)

Intent i=new Intent(EditCycle.this,EditChooseLists.class);
startActivityForResult(i, RESULT_OK);

第二个活动(EditChooseLists)就这样结束了

Toast.makeText(EditChooseLists.this, list.get(position), Toast.LENGTH_SHORT).show();            
Intent i=new Intent();
i.putExtra("desc",content);
i.putExtra("content", list.get(position));
setResult(RESULT_OK,i);
finish();

第一个Activity(EditCycle)将onActivityResult方法重写为

@Override
public void onActivityResult(int requestCode,int resultCode,Intent data){
    super.onActivityResult(requestCode, resultCode, data);
    System.out.print("Test Result !");

    String content=data.getExtras().getString("content");
    System.out.println("result String"+content);
    Toast.makeText(EditCycle.this,content, Toast.LENGTH_SHORT).show();
    TextView t=(TextView)findViewById(R.id.tv_editcycle_cropLbl);
    t.setText(content);
}

当第二个活动恢复时没有任何反应,控制台中没有任何东西,没有吐司,文本视图不变

我得出的结论是onActivityResult没有被调用

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:7)

你的问题在这里:

startActivityForResult(i, RESULT_OK);

因为RESULT_OK == -1并将负值作为第二个参数传递给startActivityForResult会破坏方法本身的承诺(来自Android Developer documentation):

  

void startActivityForResult(Intent intent,int requestCode)

     
    

requestCode int如果> = 0 ,当活动退出时,此代码将在onActivityResult()中返回。