我有代码在click事件上添加片段。这可以工作,然后按钮从显示中删除,但我希望按钮在用户按下时显示,并保留片段。像onBackStackUsed
这样的东西。
我试图找到类似的东西,但我无法找到办法。它甚至可能吗?
final FloatingActionButton floatingActionButton = (FloatingActionButton)findViewById(R.id.live_support);
floatingActionButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getFragmentManager()
.beginTransaction()
.replace(R.id.live_support_frame, ChatWindowFragment.newInstance("XXX", "1"), "chat_fragment")
.addToBackStack("chat_fragment")
.commit();
getFragmentManager().addOnBackStackChangedListener(
new FragmentManager.OnBackStackChangedListener() {
@Override
public void onBackStackChanged() {
floatingActionButton.setVisibility(View.INVISIBLE);
}
}
);
}
});
答案 0 :(得分:1)
我认为你想要的是在你的活动中实现onBackPressed。以下是一些方法How to implement onBackPressed() in Fragments?
答案 1 :(得分:0)
覆盖Activity中的onBackPress()方法并按如下方式进行管理:
D
快乐编码:)
答案 2 :(得分:0)
在活动中覆盖onBackPressed
,如下所示:
@Override
public void onBackPressed() {
Fragment frag = getSupportFragmentManager().findFragmentByTag("fragment");
if(frag instanceOf SearchFragment && frag.getTag().equals("chat_fragment")) {
floatingActionButton.setVisibility(View.INVISIBLE); // or visible
} else {
super.onBackPressed();
}
}
答案 3 :(得分:0)
getFragmentManager().addOnBackStackChangedListener(
new FragmentManager.OnBackStackChangedListener() {
@Override
public void onBackStackChanged() {
int count = getFragmentManager().getBackStackEntryCount();
if (count == 0) {
floatingActionButton.show();
} else {
floatingActionButton.hide();
}
}
}
);
在添加和堆叠或删除时都会调用onBackStachChanged 所以我只是检查是否已经有一个。