更改片段中的ActionBar标题

时间:2017-07-11 11:43:40

标签: java android android-actionbar

我需要根据调用的片段更改和更新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);

我有两种方式,没有实时更新标题。

但它无法正常工作,因为它不会根据屏幕/片段更改更新标题。升级需要一段时间,我希望它是实时的。

缺少什么?

2 个答案:

答案 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 - ExampleDocuments
  • 然后在onCreate()方法getSupportFragmentManager().addOnBackStackChangedListener(this);中编写此代码。此方法将负责更改片段。
  • 当您替换片段时,请将此方法与FragmentTransection fragmentTransaction.addToBackStack(null);一起使用此方法将您的片段添加到堆栈中,当您按下后退按钮时,它将显示堆栈中的上一个片段 - Example和{{3 }}
相关问题