我的A类调用startActivityForResult:类A是tabactivity的一个选项卡中的activitygroup
Intent intent = new Intent(this, ClassB.class);
startActivityForResult(intent, "STRING");
ClassB是一种常见的活动,不是在tabactivity中,而是单独的
Intent intent = this.getIntent();
intent.putExtra("SOMETHING", "EXTRAS");
this.setResult(RESULT_OK, intent);
finish();
但在A级onactivityResult没有收到任何东西,而不是excute.if我把classA从tabactivity,我的应用程序是好的。我读过
How to setResult() for a TabActivity which contains activity for tabs
How to return a result (startActivityForResult) from a TabHost Activity?
但是没有解决我的问题,有人可以提供一些建议,代码更好,谢谢
编辑: 在A班我添加:
public class UpdateImageBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("temp","34353");
}
}
/* (non-Javadoc)
* @see android.app.Activity#onPause()
*/
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
unregisterReceiver(updateImageBroadcastReceiver);
}
/* (non-Javadoc)
* @see android.app.Activity#onResume()
*/
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
updateImageFilter = new IntentFilter("ACTION_CHANGE_TAB");
updateImageBroadcastReceiver = new UpdateImageBroadcastReceiver();
registerReceiver(updateImageBroadcastReceiver, updateImageFilter);
}
B级:
Intent intent = new Intent("ACTION_CHANGE_TAB");
intent.putExtra("path", f.getAbsolutePath());
sendBroadcast(intent);
// FileListSelectActivity.this.setResult(RESULT_OK, intent);
finish();
但我无法打印:Log.i(“temp”,“34353”);
答案 0 :(得分:1)
不知道它是否是最好的方法,但是目前我使用的是一个我称之为内存的类来在活动之间传递对象。
public class Memory {
public static Object objectToPass = null;
}
答案 1 :(得分:1)
尝试使用广播接收器。您可以覆盖活动B中的onStop(),从活动B广播事件并在活动A中监听。
答案 2 :(得分:1)
我没有找到完全没有源代码的问题,但它可能是下一种情况之一
1)tabhost的root活动没有收到onActivityResult。然后你应该在TabHost里面的Activity中调用override onActivityResult
2)另一种情况:tabhost内的活动没有收到onActivityResult。只有焦点活动才会收到ActivityGroup内的任何操作。您应该将焦点放在其中的某个视图中,然后您将收到操作。