我的活动有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}}(在清单中设置主题)。在该活动中,我只有Dialog
和TextView
来编辑我的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
已更新?
答案 0 :(得分:1)
您可以保留活动的片段,而不是从“编辑活动”中分离和重新附加新片段,而只是以多种方式通知它。
1)使用startActivityForResult()启动编辑活动,并使编辑活动在结束前将结果返回给调用者。 (调用者将是封装片段的Activity,但回调很容易传播到里面的片段。)
2)使用LocalBroadcastManager从您的编辑活动发送本地通知,并将呼叫者注册为该通知的接收者
但其他解决方案是可能的