我会尝试解释这个中心。
看这个图像1:
我有一个名为HOME的片段,带有工具栏。
在那个片段中我有一个包含2个片段的ViewPager:
片段A和片段B
当片段A处于活动状态时,工具栏上有一个操作按钮,可以调用另一个活动。
在那"另一项活动"我有一个包含2个片段的ViewPager: 片段C和片段D。
我需要的是,当我点击Fragment C中的一个按钮时,"另一个活动"关闭并在Fragment A中执行回调。
我尝试使用startActivityforresult但没有成功。
尝试过片段C中由片段A实现的公共接口,但我认为这不会像预期的那样工作。
任何人都可以给我一个提示?
抱歉我的英语,而不是我的母语。
解释一些代码:
内部碎片A
当点击工具栏内的按钮时,他会调用"另一个活动"
startActivityForResult(IAddPedido, RESULT_ADD);
"另一项活动"创建viewpager并设置2个片段:
fragManager = getSupportFragmentManager();
adapterPedidosAdd = new AdapterPedidosAdd(fragManager);
// Seto adaptador passando o Id
viewPagerPedAdd.setAdapter(adapterPedidosAdd);
tLayoutPedAdd.post(new Runnable() {
@Override
public void run() {
tLayoutPedAdd.setupWithViewPager(viewPagerPedAdd);
}
});
在片段C中,当我点击"按钮"他将调用设置结果并调用"完成()"。
// Get the "another activity" and set the result
getActivity().setResult(1);
// Close the "another activity"
getActivity().finish();
然后,在片段A中,我有" onActivityResult":
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
}
但是" onActivityResult"里面的片段A永远不会被调用。
也许我必须创建" onActivityResult"在里面" Home"然后,获取片段A的实例来调用他内部的方法吗?
PS:" Home"是一个片段,因为我有一个NavigationDrawer。
答案 0 :(得分:0)
getActivity.setResult()
在您的代码中不起作用。
此代码不应位于onDestroy(片段)中。 onDestroy在活动完成后发生,并且调用了onActivityResult。
而不是那个
此代码需要在关闭活动/片段的代码中,例如按下后退键或onClick上的关闭按钮
我在我的示例项目中测试了您的案例场景并且它正在运行