2013-10-21 51 views
1

item.getActionView()的返回null

<item 
    android:id="@+id/menu_spinner" 
    android:actionViewClass="android.widget.Spinner" 
    android:showAsAction="always" 
    android:visible="true" /> 

public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     MenuItem mSpinnerItem = menu.findItem(R.id.menu_spinner);mSpinnerItem.setVisible(true); 
     aSpinner = (Spinner) MenuItemCompat.getActionView(mSpinnerItem); 
    } 

通過使用此... 我越來越菜單項微調項在普通視圖微調.... 要設置適配器,我這樣做... 但是,雖然這樣做的微調項目是空的參考... 請幫我怎麼逃避...

回答

0

這是你應該如何填充微調。

http://developer.android.com/guide/topics/ui/controls/spinner.html

但是,這是你應如何通過代碼做到這一點。

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); 

編輯:這裏是ActionBar微調代碼。

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; 
    } 
    } 

} 
+0

這是spinner..But作品不是動作條微調或navigationList – bGorle

+0

http://developer.android.com/guide/topics/ui/actionbar.html向下滾動例SpinnerAdapter和OnNavigationListener。應該很好去:) –

+0

檢查我的帖子中的編輯。 –