从另一个片段执行片段方法

时间:2016-03-02 18:17:27

标签: android android-fragments callback

我会尝试解释这个中心。

看这个图像1:

cenario

我有一个名为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。

1 个答案:

答案 0 :(得分:0)

由于片段和活动的生命周期,

getActivity.setResult()在您的代码中不起作用。

  

此代码不应位于onDestroy(片段)中。 onDestroy在活动完成后发生,并且调用了onActivityResult。

而不是那个

  

此代码需要在关闭活动/片段的代码中,例如按下后退键或onClick上的关闭按钮

我在我的示例项目中测试了您的案例场景并且它正在运行