我的片段有问题。基本上,我有一个应用程序,它有一个导航抽屉和 4 个活动按钮。当按下每个按钮时,它将显示另一个片段。我遇到的问题是我想在 ActionBar
上显示正确的标题。我可以在 ActionBar
的导航中显示所选项目。但是当我按下按钮转到另一个片段时,我无法在 ActionBar
上显示标题。有任何想法吗?
这是我的示例代码: HomeActivity.class
private void displayView(final int position) {
// update the main content by replacing fragments
Fragment fragment = null;
switch (position) {
case 0:
fragment = new HomeFragment();
break;
case 1:
fragment = new MyProfileFragment();
break;
case 2:
fragment = new AboutFragment();
break;
default:
break;
}
if (fragment != null) {
fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, fragment).commit();
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(navMenuTitles[position]);
drawer.closeDrawer(mDrawerList);
} else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
}
主页片段:
public class HomeFragment extends Fragment {
public HomeFragment() {
}
CardView card_cart, card_scan, card_categories, card_about;
Intent i;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_home, container, false);
initControls(rootView);
return rootView;
}
private void initControls(View rootView) {
card_cart = (CardView) rootView.findViewById(R.id.card_cart);
card_scan = (CardView) rootView.findViewById(R.id.card_scan);
card_categories = (CardView) rootView.findViewById(R.id.card_categories);
card_about = (CardView) rootView.findViewById(R.id.card_about);
card_categories.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
i = new Intent(getActivity(), CategoriesActivity.class);
startActivity(i);
}
});
card_cart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyCartFragment nextFrag = new MyCartFragment();
getFragmentManager().beginTransaction()
.replace(R.id.frame_container, nextFrag)
.addToBackStack(null)
.commit();
}
});
card_about.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AboutGrabHutFragment aboutFrag = new AboutGrabHutFragment();
getFragmentManager().beginTransaction()
.setBreadCrumbTitle(getResources().getString(R.string.about))
.replace(R.id.frame_container, aboutFrag)
.addToBackStack(null)
.commit();
}
});
card_scan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
i = new Intent(getActivity(), ScanActivity.class);
startActivity(i);
}
});
}
在 HomeFragment
中会找到这 4 个按钮。单击按钮,将转到另一个片段。我可以用这个来显示:
card_about.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AboutGrabHutFragment aboutFrag = new AboutGrabHutFragment();
getFragmentManager().beginTransaction()
.setBreadCrumbTitle(getResources().getString(R.string.about))
.replace(R.id.frame_container, aboutFrag)
.addToBackStack(null)
.commit();
getActivity().setTitle("About");
}
});
但问题是当我回去时,标题仍然是 About
。
原文由 user1410081 发布,翻译遵循 CC BY-SA 4.0 许可协议
在所需片段的 onCreateView() 方法上,调用 Main Activity 的 setTitle(“”) 方法。这样你就不需要检查后压事件。
这对我有用
例如***
更新:
您可以通过覆盖
onResume
方法来更改标题。为了安全起见,您还可以覆盖setUserVisibleHint
并在片段isVisibleToUser
时更改标题。