刷新另一个活动的底部导航栏片段

时间:2017-12-20 09:33:15

标签: android android-fragments

我的活动有BottomNavigationView,我使用Fragment来显示点击导航栏上的项目时的内容。

在那项活动中,我有:

private BottomNavigationView.OnNavigationItemSelectedListener navItemListener
        = new BottomNavigationView.OnNavigationItemSelectedListener() {

    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()) {

            case R.id.item1:
                getSupportFragmentManager().beginTransaction().replace(R.id.container,new Fragment1()).commit();
                return true;
            case R.id.item2:
                getSupportFragmentManager().beginTransaction().replace(R.id.container,new Fragment2()).commit();
                return true;
            case R.id.item3:
                getSupportFragmentManager().beginTransaction().replace(R.id.container,new Fragment3()).commit();
                return true;
        }
        return false;
    }

};

在我的Fragment1中,我有一个编辑按钮,点击后会启动另一个充当Activity的{​​{1}}(在清单中设置主题)。在该活动中,我只有DialogTextView来编辑我的Button片段中的文字。

在我的编辑活动中,我有:

item1

文本更新,但分离附件似乎无法正常工作,我仍然需要点击底部导航栏上的另一个项目才能看到已编辑的文本。如何点击private class ButtonClicked implements View.OnClickListener { @Override public void onClick(View v) { switch (v.getId()){ case R.id.btnEdit: UpdateText(); getSupportFragmentManager().beginTransaction().detach(new Fragment1()).attach(new Fragment1()).commit(); finish(); break; case R.id.btnCancel: finish(); break; } } } Button将关闭,我可以看到Activity中的TextView已更新?

1 个答案:

答案 0 :(得分:1)

您可以保留活动的片段,而不是从“编辑活动”中分离和重新附加新片段,而只是以多种方式通知它。

1)使用startActivityForResult()启动编辑活动,并使编辑活动在结束前将结果返回给调用者。 (调用者将是封装片段的Activity,但回调很容易传播到里面的片段。)

2)使用LocalBroadcastManager从您的编辑活动发送本地通知,并将呼叫者注册为该通知的接收者

但其他解决方案是可能的

相关问题