更改片段中的 ActionBar 标题
Change ActionBar title in the fragments
我需要根据调用的片段更改和更新 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);
两种方式我都有none实时更新标题
但它无法正常工作,因为它不会根据屏幕/片段的变化更新标题。升级需要一段时间,希望是实时的
缺少什么?
你必须实现 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
每次你的片段从一个变成另一个时都会调用
NOTE- don't forget use getSupportFragmentManager().addOnBackStackChangedListener(this);
And fragmentTransaction.addToBackStack(null);
希望对您有所帮助。
编辑
- 首先像这样实现这个接口 -
class MyActivity extends AppCompatActivity implements OnBackStackChangedListener
- Example and Documents
- 然后在
onCreate()
方法中编写此代码 getSupportFragmentManager().addOnBackStackChangedListener(this);
此方法将负责片段的更改。
- 当您替换片段时,然后将此方法与 FragmentTransection 一起使用
fragmentTransaction.addToBackStack(null);
此方法会将您的片段添加到堆栈中,当您按下后退按钮时,它将显示堆栈中的上一个片段 - Example and Documents
首先创建界面
public interface ToolbarInterface {
public void getToolbarResources(String title, int visibility);
}
在您的 activity
中实施
public class NavigationDrawerActivity extends AppCompatActivity
implements ToolbarInterface
并覆盖activity
中的接口方法
@Override
public void getToolbarResources(String title, int visibility) {
getSupportActionBar().setTitle(title);
}
}
在Fragment调用接口中的Oncreete方法如
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ToolbarInterface toolbarCallback = (ToolbarInterface) getActivity();
}
并通过 onCreateView 方法设置标题
toolbarCallback.getToolbarResources("Toolbar title",1);
我需要根据调用的片段更改和更新 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);
两种方式我都有none实时更新标题
但它无法正常工作,因为它不会根据屏幕/片段的变化更新标题。升级需要一段时间,希望是实时的
缺少什么?
你必须实现 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
每次你的片段从一个变成另一个时都会调用
NOTE- don't forget use
getSupportFragmentManager().addOnBackStackChangedListener(this);
AndfragmentTransaction.addToBackStack(null);
希望对您有所帮助。
编辑
- 首先像这样实现这个接口 -
class MyActivity extends AppCompatActivity implements OnBackStackChangedListener
- Example and Documents - 然后在
onCreate()
方法中编写此代码getSupportFragmentManager().addOnBackStackChangedListener(this);
此方法将负责片段的更改。 - 当您替换片段时,然后将此方法与 FragmentTransection 一起使用
fragmentTransaction.addToBackStack(null);
此方法会将您的片段添加到堆栈中,当您按下后退按钮时,它将显示堆栈中的上一个片段 - Example and Documents
首先创建界面
public interface ToolbarInterface {
public void getToolbarResources(String title, int visibility);
}
在您的 activity
中实施public class NavigationDrawerActivity extends AppCompatActivity
implements ToolbarInterface
并覆盖activity
中的接口方法 @Override
public void getToolbarResources(String title, int visibility) {
getSupportActionBar().setTitle(title);
}
}
在Fragment调用接口中的Oncreete方法如
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ToolbarInterface toolbarCallback = (ToolbarInterface) getActivity();
}
并通过 onCreateView 方法设置标题
toolbarCallback.getToolbarResources("Toolbar title",1);