Joh*_*ggs 5 android android-fragments appcompatactivity
我有两个支持片段坐在里面AppCompatActivity.根据设计,它们每个都有独特的工具栏和选项菜单.在AppCompatActivity没有工具栏,因为这些都包含在每个片段它的布局.
在每个片段中,我setHasOptionsMenu(true);在onCreate()中.
在onCreateView()中,我调用的((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);是工具栏是绑定到xml工具栏元素的对象.
在onCreateOptionsMenu(),我首先调用super,然后调用menu.clear(),最后使用inflater.inflate(R.menu.searchbar_menu,menu)来扩展菜单;
失败的地方在于调用((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);这两个片段.在这样做时,选项将仅出现在第二个片段上而不出现在第一个片段上.如果我只在一个片段中调用它,则选项只在那个片段中按预期显示.当然,如果我不打电话,它们根本就不会出现.
这是我的代码.两个片段基本相同,但菜单膨胀除外:
public class FeedFragment extends Fragment implements FeedView{
@BindView(R.id.toolbar)
Toolbar toolbar;
FeedPresenter presenter;
static final String TAG = "FEED_FRAGMENT";
/*
* Some boilerplate fragment setup code
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_feed, container, false);
ButterKnife.bind(this, view);
((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);
setupToolar();
return view;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
menu.clear();
inflater.inflate(R.menu.searchbar_menu, menu);
}
private void setupToolbar(){
toolbar.setPadding(0,ScreenUtil.getStatusBarHeight(this.getActivity()),0,0);
toolbar.setTitle("");
}
/*
* Other logic code unique to each fragment
*/
Run Code Online (Sandbox Code Playgroud)
有谁知道我可以设置两个片段以拥有他们的工具栏选项吗?
提前致谢.
当您调用时getActivity(),它会返回您的相同实例Activity。第二个片段的初始化晚于第一个片段,这就是为什么Activity只能支持第二个片段上的操作栏。
你可以试试这个
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
AppCompatActivity baseActivity = (AppCompatActivity) getContext();
baseActivity.setSupportActionBar(yourToolbar);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
820 次 |
| 最近记录: |