【问题标题】:Refresh bottom navigation bar fragment from another activity从另一个活动刷新底部导航栏片段
【发布时间】:2017-12-20 17:43:36
【问题描述】:

我有一个包含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,它充当Dialog(在清单中设置主题)。在那个活动中,我只有一个 TextViewButton 用于编辑我的 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 将关闭,我可以在我的Fragment 中看到我的TextView 已经更新?

【问题讨论】:

  • 你为什么要分离一个新创建的Fragment

标签: android android-fragments


【解决方案1】:

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

1) 使用 startActivityForResult() 启动您的编辑活动,并让您的编辑活动在完成之前将结果返回给调用者。 (调用者应该是封装了fragment的Activity,但是回调可以很容易的传播到fragment里面)。

2) 使用 LocalBroadcastManager 从您的 Edit Activity 发送本地通知,并将调用者注册为该通知的接收者

但其他解决方案是可能的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-27
    • 1970-01-01
    • 2019-12-29
    • 2016-01-07
    • 2022-08-19
    • 2022-01-06
    • 1970-01-01
    • 2022-11-04
    相关资源
    最近更新 更多