我需要根据调用的片段更改和更新ActionBar标题。
我使用了这个示例方法:
=Method 1===============================
Activity > Codigo
public void setActionBarTitle(String title) {
getSupportActionBar().setTitle(title);
}
Fragmento > Codigo
public void onResume(){
super.onResume();
// Set title bar
((MainFragmentActivity) getActivity())
.setActionBarTitle("Your title");
}
=Method 2================================
Activity:
public void setActionBarTitle(String title){
YOUR_CUSTOM_ACTION_BAR_TITLE.setText(title);
}
Fragment:
((MainFragmentActivity) getActivity()).setActionBarTitle(YOUR_TITLE);
我有两种方式,没有实时更新标题。
但它无法正常工作,因为它不会根据屏幕/片段更改更新标题。升级需要一段时间,我希望它是实时的。
缺少什么?
答案 0 :(得分:3)
首先创建界面
public interface ToolbarInterface {
public void getToolbarResources(String title, int visibility);
}
在您的活动中实施
public class NavigationDrawerActivity extends AppCompatActivity
implements ToolbarInterface
并覆盖活动中的接口方法
@Override
public void getToolbarResources(String title, int visibility) {
getSupportActionBar().setTitle(title);
}
}
在Oncreete方法的Fragment调用接口中,如
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ToolbarInterface toolbarCallback = (ToolbarInterface) getActivity();
}
从onCreateView方法设置标题,如
toolbarCallback.getToolbarResources("Toolbar title",1);
答案 1 :(得分:0)
你必须恭维OnBackStackChangedListener
它将覆盖onBackStackChanged
方法。
<强> MainFragmentActivity 强>
@Override
public void onBackStackChanged() {
try {
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.home_container);
fragment.onResume();
} catch (Exception ex) {
ex.printStackTrace();
}
}
<强>片段强>
public void onResume(){
super.onResume();
// Set title bar
((MainFragmentActivity) getActivity())
.setActionBarTitle("Your title");
}
每当您的片段从一个片段更改为另一个片段时, onBackStackChanged
将会调用
注意 - 请勿忘记使用
getSupportFragmentManager().addOnBackStackChangedListener(this);
和fragmentTransaction.addToBackStack(null);
希望它会对你有所帮助。
class MyActivity extends AppCompatActivity implements OnBackStackChangedListener
- Example和Documents onCreate()
方法getSupportFragmentManager().addOnBackStackChangedListener(this);
中编写此代码。此方法将负责更改片段。fragmentTransaction.addToBackStack(null);
一起使用此方法将您的片段添加到堆栈中,当您按下后退按钮时,它将显示堆栈中的上一个片段 - Example和{{3 }}