【发布时间】:2015-03-11 04:56:23
【问题描述】:
我的片段有问题。基本上,我有一个应用程序,它有一个导航抽屉和 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");
}
}
HomeFragment:
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。
【问题讨论】:
-
对于在这里绊倒并使用导航抽屉的任何人,您的答案可能是更新您的目的地标签,请参阅question
-
这篇文章中有另一个答案。它更新并处理最近作为 MVVM 模式实现的新想法。请查看此链接:stackoverflow.com/a/18011671/9205277