我正在使用调用ActivityGroup的TabActivity。带来问题的典型方法。
现在我遇到了onActivityResult的问题
在我的活动中我有..
public class MyActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.place_buttontab_community_media);
Button ButtonClick =(Button) findViewById(R.id.addPicture);
ButtonClick.setOnClickListener(new OnClickListener (){
@Override
public void onClick(View view)
{
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
// request code
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.i(TAG, "hi");
super.onActivityResult(requestCode, resultCode, data);
}
}
遗憾的是,永远不会调用onActivityResult。
答案 0 :(得分:1)
您应该在ActivityGroup的onActivityResult()中监听结果。收到结果后,您必须决定应该接收哪个活动,并使用收到的值调用onActivityResult()方法。
答案 1 :(得分:1)
我最近遇到了这个,要巩固Andras'和virtual82的回答和讨论(抱歉,由于我的低代表,我无法添加评论):
如果您的活动是在TabActivity使用的ActivityGroup内启动的,那么当您从内部活动启动具有startActivityForResult(Intent intent,int requestCode)的活动时,只有ActivityGroup活动可以接收对onActivityResult的方法调用。的ActivityGroup。
在我的情况下,我有一个包含FragmentActivitys的TabActivity。 FragmentActivity中的片段可以为结果启动活动。 在这种情况下,Fragment需要以TabActivity作为调用活动来启动活动:
Intent doSomethingIntent = new Intent();
//getActivity() returns the FragmentActivity, so we need to get the TabActivity with getParent()
Activity tabActivity = getActivity().getParent();
doSomethingIntent .setClass(tabActivity , PostCommentActivity.class);
tabActivity.startActivityForResult(doSomethingIntent , DO_SOMETHING_REQ_CODE);
然后在TabActivity的onActivityResult中,将结果传递回Fragment。
Activity currentActivity = getLocalActivityManager().getCurrentActivity();
//get the FragmentActivity in order to get the Fragment instance
if(currentActivity instanceof FragmentActivity){
FragmentActivity currentFragmentActivity = (FragmentActivity)currentActivity ;
//R.id.l_container is the layout/viewgroup that contains the Fragment
Fragment currentFragment = currentFragmentActivity.getSupportFragmentManager().findFragmentById(R.id.l_container);
if(currentFragment != null){
//pass result to the Fragment!
frag.onActivityResult(requestCode, resultCode, data);
}
}
我意识到不推荐使用ActivityGroup,TabActivity和LocalActivityManager来支持Fragment和FragmentManager,但是我的项目时间限制让我没有足够的时间来完全升级。 希望这篇文章可以帮助处于这种情况的人,而不是通常的“不要做”的回应,你会看到其他地方。