【问题标题】:Execute fragment method from another fragment从另一个片段执行片段方法
【发布时间】:2016-03-03 03:51:32
【问题描述】:

我会尝试解释场景。

看这张图片1:

我有一个名为 HOME 的片段,带有一个工具栏。

在那个片段中,我有一个带有 2 个片段的 ViewPager:

片段 A 和片段 B

当片段 A 处于活动状态时,工具栏有一个调用另一个活动的操作按钮。

在那个“另一个活动”中,我有一个带有 2 个片段的 ViewPager: 片段 C 和片段 D。

我需要的是,当我点击片段 C 中的按钮时,“另一个活动”会关闭并在片段 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 中,当我点击“按钮”时,他会调用设置结果并调用“finish()”。

// 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) {

}

但是 Fragment A 中的“onActivityResult”永远不会被调用。

也许我必须在“Home”中创建“onActivityResult”,然后获取片段 A 的实例来调用他内部的方法?

PS.:“Home”是一个片段,因为我有一个 NavigationDrawer。

【问题讨论】:

标签: android android-fragments callback


【解决方案1】:

getActivity.setResult() 在您的代码中不起作用,因为片段和活动的生命周期。

此代码不应在 onDestroy(fragment) 中。 onDestroy 发生在 Activity 已经完成并调用 onActivityResult 之后。

而不是那个

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

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

【讨论】:

  • 我已经编辑了我的答案,尝试使用片段 C/D 中的接口在您的另一个活动中设置结果
  • 所以,尝试将 getActivity.setResult(1) 放入 onDestroy(在 Fragment C 中)但不起作用。 onActivityResult 不叫对不起,我没有看到你的评论。威尔,尝试使用界面
  • 看答案的建议部分(第二个黄色段落)
  • 让我知道您是否可以解决问题,否则我会将保管箱链接分享给您。现在是凌晨 1 点 35 分,所以该睡觉了
  • 对不起。我一直没能解决。你能和我分享你的代码吗?
猜你喜欢
  • 2015-01-28
  • 1970-01-01
  • 1970-01-01
  • 2017-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-30
相关资源
最近更新 更多