Android item.getActionView()返回null
通过使用这个。。。 我正在将菜单项微调器项导入到普通视图微调器。。。。 要设置适配器,我是这样做的。。。 但在执行此操作时,微调器项将获得空引用。。。Android item.getActionView()返回null,android,android-actionbar,Android,Android Actionbar,通过使用这个。。。 我正在将菜单项微调器项导入到普通视图微调器。。。。 要设置适配器,我是这样做的。。。 但在执行此操作时,微调器项将获得空引用。。。 请帮助我如何摆脱这个…这是您应该如何填充微调器的 但这是通过代码实现的方式 public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { MenuItem mSpinnerItem = menu.findItem(R.id.menu_spinner);mS
请帮助我如何摆脱这个…这是您应该如何填充微调器的 但这是通过代码实现的方式
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
MenuItem mSpinnerItem = menu.findItem(R.id.menu_spinner);mSpinnerItem.setVisible(true);
aSpinner = (Spinner) MenuItemCompat.getActionView(mSpinnerItem);
}
Spinner-Spinner=(Spinner)findViewById(R.id.Spinner);
//使用字符串数组和默认微调器布局创建ArrayAdapter
ArrayAdapter=ArrayAdapter.createFromResource(此,
R.array.planets_数组,android.R.layout.simple_微调器_项);
//指定当选项列表显示adapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉项)时要使用的布局;
//将适配器应用于微调器
旋转器。设置适配器(适配器);
编辑:下面是ActionBar微调器的代码
Spinner spinner = (Spinner) findViewById(R.id.spinner);
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.planets_array, android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
spinner.setAdapter(adapter);
导入android.app.ActionBar;
导入android.app.Fragment;
导入android.os.Bundle;
导入android.support.v4.app.FragmentActivity;
导入android.view.Gravity;
导入android.view.LayoutInflater;
导入android.view.Menu;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.TextView;
公共类MainActivity扩展了FragmentActivity实现
ActionBar.OnNavigationListener{
/**
*表示
*当前下拉位置。
*/
私有静态最终字符串状态\u SELECTED\u NAVIGATION\u ITEM=“SELECTED\u NAVIGATION\u ITEM”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//设置操作栏以显示下拉列表。
最终ActionBar ActionBar=getActionBar();
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setNavigationMode(actionBar.NAVIGATION\u MODE\u列表);
最终字符串[]dropdownValues=getResources().getStringArray(R.array.dropdown);
//指定SpinnerAdapter以填充下拉列表。
ArrayAdapter=新的ArrayAdapter(actionBar.getThemedContext(),
android.R.layout.simple\u微调器\u项,android.R.id.text1,
下拉值);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
//在操作栏中设置下拉列表导航。
setListNavigationCallbacks(适配器,this);
//使用getActionBar().getThemedContext()确保
//文本颜色始终适用于操作栏
//背景而不是活动背景。
}
@凌驾
RestoreInstanceState上的公共无效(Bundle savedInstanceState){
//恢复以前序列化的当前下拉列表位置。
if(savedInstanceState.containsKey(状态\选定\导航\项)){
getActionBar().setSelectedNavigationItem(savedInstanceState.getInt(状态为选中的导航项));
}
}
@凌驾
SaveInstanceState上的公共无效(束超出状态){
//序列化当前下拉列表位置。
outState.putInt(STATE\u SELECTED\u NAVIGATION\u项,getActionBar()
.getSelectedNavigationIndex());
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.activity\u主菜单);
返回true;
}
@凌驾
公共布尔值onNavigationItemSelected(整型位置,长id){
//选择给定的下拉项后,将其内容显示在
//容器视图。
Fragment Fragment=新的DummySectionFragment();
Bundle args=新Bundle();
args.putInt(DummySectionFragment.ARG_节号,位置+1);
fragment.setArguments(args);
getFragmentManager().beginTransaction()
.replace(R.id.container,fragment).commit();
返回true;
}
/**
*假碎片
*/
公共静态类DummySectionFragment扩展了片段{
公共静态最终字符串ARG\u SECTION\u NUMBER=“占位符\u text”;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
TextView TextView=新的TextView(getActivity());
textView.setGravity(Gravity.CENTER);
textView.setText(Integer.toString(getArguments().getInt(ARG_SECTION_NUMBER));
返回文本视图;
}
}
}
这适用于微调器..但不适用于Actionbar微调器或navigationList向下滚动至示例SpinnerAdapter和OnNavigationListener。应该可以走了:)谢谢。。。您能告诉我如何将该微调器访问到微调器类中吗
Spinner spinner = (Spinner) findViewById(R.id.spinner);
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.planets_array, android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
spinner.setAdapter(adapter);
import android.app.ActionBar;
import android.app.Fragment;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class MainActivity extends FragmentActivity implements
ActionBar.OnNavigationListener {
/**
* The serialization (saved instance state) Bundle key representing the
* current dropdown position.
*/
private static final String STATE_SELECTED_NAVIGATION_ITEM = "selected_navigation_item";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Set up the action bar to show a dropdown list.
final ActionBar actionBar = getActionBar();
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
final String[] dropdownValues = getResources().getStringArray(R.array.dropdown);
// Specify a SpinnerAdapter to populate the dropdown list.
ArrayAdapter<String> adapter = new ArrayAdapter<String>(actionBar.getThemedContext(),
android.R.layout.simple_spinner_item, android.R.id.text1,
dropdownValues);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Set up the dropdown list navigation in the action bar.
actionBar.setListNavigationCallbacks(adapter, this);
// use getActionBar().getThemedContext() to ensure
// that the text color is always appropriate for the action bar
// background rather than the activity background.
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
// Restore the previously serialized current dropdown position.
if (savedInstanceState.containsKey(STATE_SELECTED_NAVIGATION_ITEM)) {
getActionBar().setSelectedNavigationItem(savedInstanceState.getInt(STATE_SELECTED_NAVIGATION_ITEM));
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
// Serialize the current dropdown position.
outState.putInt(STATE_SELECTED_NAVIGATION_ITEM, getActionBar()
.getSelectedNavigationIndex());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public boolean onNavigationItemSelected(int position, long id) {
// When the given dropdown item is selected, show its contents in the
// container view.
Fragment fragment = new DummySectionFragment();
Bundle args = new Bundle();
args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, position + 1);
fragment.setArguments(args);
getFragmentManager().beginTransaction()
.replace(R.id.container, fragment).commit();
return true;
}
/**
* A dummy fragment
*/
public static class DummySectionFragment extends Fragment {
public static final String ARG_SECTION_NUMBER = "placeholder_text";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
TextView textView = new TextView(getActivity());
textView.setGravity(Gravity.CENTER);
textView.setText(Integer.toString(getArguments().getInt(ARG_SECTION_NUMBER)));
return textView;
}
}
}