ActionBar 下拉菜單

自定義的Fragment:
public class StudentInfo extends Fragment{    // Fragment對應的標籤,當Fragment依附於Activity時得到    private String tag;    @Override    public void onAttach(Activity activity)    {        super.onAttach(activity);        tag = getTag();    }    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)    {        TextView textView = new TextView(getActivity());        textView.setText(tag);        return textView;    }}

   在strings.xml中定義一數組,這數組就是菜單項的信息:

<?xml version="1.0" encoding="utf-8"?><resources>    <string name="app_name">ActionBar下拉菜單</string>    <string-array name="student">        <item>鄧名僑</item>        <item>劉天喜</item>        <item>其黃石</item>        <item>蔡宏遠</item>    </string-array></resources>

 

  主要的程序片段,MainActivity:

public class MainActivity extends Activity{    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        // 生成一SpinnerAdapter        SpinnerAdapter adapter = ArrayAdapter.createFromResource(this, R.array.student, android.R.layout.simple_spinner_dropdown_item);        // 得到ActionBar        ActionBar actionBar = getActionBar();        //ActionBar的操作模型設置爲NAVIGATION_MODE_LIST        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);        //ActionBar設置下拉菜單和監聽器        actionBar.setListNavigationCallbacks(adapter, new DropDownListenser());    }    /**     * 實現 ActionBar.OnNavigationListener接口     */    class DropDownListenser implements OnNavigationListener    {        // 得到和SpinnerAdapter一致的字符數組        String[] listNames = getResources().getStringArray(R.array.student);        /* 當選擇下拉菜單項的時候,將Activity中的內容置換爲對應的Fragment */        public boolean onNavigationItemSelected(int itemPosition, long itemId)        {            // 生成自定的Fragment            StudentInfo student = new StudentInfo();            FragmentManager manager = getFragmentManager();            FragmentTransaction transaction = manager.beginTransaction();            // 將Activity中的內容替換成對應選擇的Fragment            transaction.replace(R.id.context, student, listNames[itemPosition]);            transaction.commit();            return true;        }    }}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章