为什么onActivityResult无法输入方法?

时间:2014-07-08 08:32:24

标签: android android-activity onactivityresult

我有一项活动B,由活动A调用。

在活动A中:

intent = new Intent (MainActivity.this, SelectionActivity.class);
startActivityForResult(intent, RESULT_OK);

在活动B中(单击项目时它与ListView有关):

@Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
    long arg3) {
                // TODO Auto-generated method stub
                TextView tv = (TextView)arg0.getChildAt(arg2);
                String key = tv.getText().toString();
                Intent myIntent = new Intent();
                myIntent.putExtra("genre", key);
                setResult(RESULT_OK,myIntent);
                finish();
            }

我在onActivityResult

中覆盖了A这样的方法
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
           super.onActivityResult(requestCode, resultCode, data);
           if (resultCode == RESULT_OK) {
              if (data != null) {
                 Bundle b = data.getExtras(); 
                 String str = b.getString("genre");
                 Log.v("nope","loaded ! " + str);
                 r.LoadGenre(str);
              }
              Log.v("nope"," not loaded ! ");
           }
        } 

但我从未接触到任何Log.v条消息。

LogCat很清楚,没有错误。运行A时,它会完美地启动B,当点击B上的项目时,B会完全关闭以返回A

1 个答案:

答案 0 :(得分:1)

您需要将request code传递给startActivityForResult()方法 “请求代码”标识您的请求。当您收到结果Intent时,回调会提供相同的请求代码,以便您的应用程序可以正确识别结果并确定如何处理它。

在您的情况下,您没有使用requestcode

检查收到的结果

因此,请在requestCode方法中检查onActivityResult。更改

startActivityForResult(intent, RESULT_OK);

startActivityForResult(intent, 200);

if (resultCode == RESULT_OK) {

if (requestCode == 200 && resultCode == RESULT_OK) {