从片段 2 回到片段 1 但标题仍然来自片段 2
back from fragment 2 to fragment 1 but title still that from fragment 2
每个人都有问题,不知道如何解决;
问题是我有包含工具栏的 mainActivity 是 xml
在 onCreate() 中,我使用此代码添加片段 1
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
// put the fragment to the Main Activity
mainFragment = (MainFragment) getSupportFragmentManager().findFragmentById(R.id.fragment_container);
if (mainFragment == null) {
mainFragment = MainFragment.newInstance();
getSupportFragmentManager()
.beginTransaction()
.add(R.id.fragment_container, mainFragment)
.commit();
}
} catch (Exception e) {
goToMainFragment();
// Log.v("goToMainFragment()", "goToMainFragment()");
}
}
然后我有按钮,例如或从抽屉中单击它时使用此代码转到片段 2
public void editTimeSheet() {
AddTimeSheetFragment timeSheetFragment = new AddTimeSheetFragment();
Bundle bundle = new Bundle();
bundle.putInt("action", 2);
bundle.putSerializable("timeSheet", timeSheet);
timeSheetFragment.setArguments(bundle);
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, timeSheetFragment).addToBackStack("stack").commit();
}
当然,在每个片段中,我都会使用以下方法更改工具栏标题
getActivity().setTitle("some title");
但问题是当我重新使用 onBackPressed 时,标题没有改变,仍然是从片段 2 设置的标题,我知道为什么,因为我更改了 activity 的工具栏标题,当我回到片段时1 onCreateView 未调用,因此标题未更改,我尝试调用片段 lifeCycle 方法,以便在后退按钮中调用任何方法,我将从中更改工具栏标题,但返回时似乎没有方法调用
如果问题不够清楚,我很抱歉,但我最好写出来并描述问题,谢谢你的时间
好的,没有人回答我,经过长时间的研究,我发现了这个并且它有效
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
if (hidden) {
// Toast.makeText(getContext(), "hide fragment", Toast.LENGTH_SHORT).show();
} else {
// Toast.makeText(getContext(), "show fragment", Toast.LENGTH_SHORT).show();
setToolbarTitle();
}
}
回到片段 1 后调用此方法,隐藏值 = false
每个人都有问题,不知道如何解决;
问题是我有包含工具栏的 mainActivity 是 xml 在 onCreate() 中,我使用此代码添加片段 1
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
// put the fragment to the Main Activity
mainFragment = (MainFragment) getSupportFragmentManager().findFragmentById(R.id.fragment_container);
if (mainFragment == null) {
mainFragment = MainFragment.newInstance();
getSupportFragmentManager()
.beginTransaction()
.add(R.id.fragment_container, mainFragment)
.commit();
}
} catch (Exception e) {
goToMainFragment();
// Log.v("goToMainFragment()", "goToMainFragment()");
}
}
然后我有按钮,例如或从抽屉中单击它时使用此代码转到片段 2
public void editTimeSheet() {
AddTimeSheetFragment timeSheetFragment = new AddTimeSheetFragment();
Bundle bundle = new Bundle();
bundle.putInt("action", 2);
bundle.putSerializable("timeSheet", timeSheet);
timeSheetFragment.setArguments(bundle);
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, timeSheetFragment).addToBackStack("stack").commit();
}
当然,在每个片段中,我都会使用以下方法更改工具栏标题 getActivity().setTitle("some title");
但问题是当我重新使用 onBackPressed 时,标题没有改变,仍然是从片段 2 设置的标题,我知道为什么,因为我更改了 activity 的工具栏标题,当我回到片段时1 onCreateView 未调用,因此标题未更改,我尝试调用片段 lifeCycle 方法,以便在后退按钮中调用任何方法,我将从中更改工具栏标题,但返回时似乎没有方法调用
如果问题不够清楚,我很抱歉,但我最好写出来并描述问题,谢谢你的时间
好的,没有人回答我,经过长时间的研究,我发现了这个并且它有效
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
if (hidden) {
// Toast.makeText(getContext(), "hide fragment", Toast.LENGTH_SHORT).show();
} else {
// Toast.makeText(getContext(), "show fragment", Toast.LENGTH_SHORT).show();
setToolbarTitle();
}
}
回到片段 1 后调用此方法,隐藏值 = false