2014-07-08 22 views
0

我有活动A.的Android onActivityResult未能进入方法

称为在活动的AN活动B:

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方法像这样在一个:

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

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

你的情况,你没有检查与requestcode

接收到的结果因此,检查requestCode也在你onActivityResult method.So变化

startActivityForResult(intent, RESULT_OK); 

startActivityForResult(intent, 200); 

if (resultCode == RESULT_OK) { 

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

它的工作。这是为什么发飙? 当你调用OnActivityResult时,A是否再次调用“OnCreate”?如果没有,如何使它呼叫? – user3745776

+0

对不起,编辑我的评论在那里 – user3745776

+0

@ user3745776不,在创建时只调用活动创建,并且在OnActivityResult中不会调用onCreate,因为您的活动A在Activity的堆栈中。 –