Mav*_*.pe 8 android android-fragments android-actionbar
我有1个活动,里面有3个碎片(Home-Login-RestorePass)最初,HomeFragment显示,其他两个隐藏.我希望ActionBar标题根据显示的片段而改变.
我在尝试我的活动:
public void setActionBarTitle(String title){
getSupportActionBar().setTitle(title);
}
@Override
public void onResume() {
super.onResume();
// Set title
setActionBarTitle(getString(R.string.app_name));
}
Run Code Online (Sandbox Code Playgroud)
和碎片有相同的:
@Override
public void onResume() {
super.onResume();
// Set title
((LoginActivity) getActivity()).setActionBarTitle(getString(R.string.fragment_login));
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用.它总是在标题上显示R.string.fragment_login.
我正在使用FragmentTransaction进行片段转换:
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
HomeFragment homeFragment = (HomeFragment) getFragmentManager().findFragmentById(R.id.fragmentHome);
LoginFragment loginFragment = (LoginFragment) getFragmentManager().findFragmentById(R.id.fragmentLogin);
ft.hide(homeFragment).addToBackStack(null);
ft.show(loginFragment).addToBackStack(null).commit();
}
});
Run Code Online (Sandbox Code Playgroud)
另外,如果我可以在ActionBar上出现一个箭头按钮(后退),取决于片段会很棒.
谢谢你的时间!问候.
NoC*_*uxe 13
请记住,如果您使用支持库,则必须在完成后专门投射您的活动getActivity().然后你会想要确保你使用了检索支持ActionBar getSupportActionBar().我可以通过在Fragment中使用以下代码在我的应用程序中设置ActionBar标题onResume()...
@Override
public void onResume() {
super.onResume();
AppCompatActivity activity = (AppCompatActivity) getActivity();
ActionBar actionBar = activity.getSupportActionBar();
actionBar.setTitle(R.string.my_fragment_title);
}
Run Code Online (Sandbox Code Playgroud)
Ang*_*i H 12
在activity中使用此方法以Fragment编程方式更改和设置标题:
private void displayFragment(int position) {
// update the main content by replacing fragments
Fragment fragment = null;
String title = "";
switch (position) {
case 0:
fragment = new Home();
title = "Home";
break;
case 1:
fragment = new Login();
title = "Login";
break;
case 2:
fragment = new RestorePass();
title = "Restore Password";
break;
default:
break;
}
// update selected fragment and title
if (fragment != null) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.frame_container, fragment).commit();
getSupportActionBar().setTitle(title);
// change icon to arrow drawable
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_arrow);
}
}
Run Code Online (Sandbox Code Playgroud)
例如,您希望Home显示Fragment :
displayFragment(0);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24241 次 |
| 最近记录: |