我希望做一个微调消失某些片段,但在活动第一次加载到默认片段,微调是可见的,而不是走了。我试图把它在onCreateOptionsMenu和的onCreate但那些没有工作。微调器是从实际的工具栏菜单单独的菜单。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main_toolbar, menu); //only contains icons
//which leads to intent of another activity and search
getMenuInflater().inflate(R.menu.menu_main_toolbar_spinner, menu);
MenuItem item = menu.findItem(R.id.menu_spinner_toolbar_main);
Spinner spinner = (Spinner) item.getActionView();
spinner.setVisibility(View.GONE);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.array_spinner_topics, android.R.layout.simple_spinner_dropdown_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
return true;
}
这是工具栏上的微调菜单(menu标签是按通常的xmlns)
<item
android:id="@+id/menu_spinner_toolbar_main"
app:actionViewClass="android.widget.Spinner"
app:showAsAction="always"
tools:ignore="MenuTitle" />
首先在XML中,我加入
android:visible="false"
然后,在活动中,我写道:
private int fragNumber = 1;
下面的onCreateOptionsMenu和onOptionsItemSelected,我开始了一个onPrepareOptionsMenu
public boolean onPrepareOptionsMenu (Menu menu) {
MenuItem spinner = menu.findItem(R.id.menu_spinner_toolbar_main);
if (fragNumber == 1) {
spinner.setVisible(false);
} else {
spinner.setVisible(true);
}
return true;
}
然后在onNavigationItemSelected,其中I具有嵌入内部的一个片段加载函数,我设置fragNumber为1或2。