如何在导航栏

时间:2017-02-22 20:57:57

标签: android navigation-drawer items

我无法动态地将项目添加到导航栏中,我已经解决了添加此类项目的问题

`for(int i = 0; i<lista.size(); i++){
            SubMenu menuGroup = menu.addSubMenu(Menu.NONE, i, Menu.NONE, lista.get(i));
            for(int j = 0; j<5; j++){
                menuGroup.add(item + j);
            }`

问题在于:

 public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    int id = item.getItemId();

    if (id == R.id.nav_manage) {
        // Handle the camera action
        //here comes the action for the first item

    } else if (id == R.id.item_2) {
        //here comes the action for item 2 and so on

所以问题是,一旦我动态创建了项目(已经完成了),我该如何添加项目点击(已经创建的项目的操作)。 我尝试了一个for循环,但因为它是一个if - else if条件我不能使用for循环。 任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

我之前遇到过同样的问题并以这种方式解决了

  1. 创建一个包含bundle及其布局的片段
  2. 在MainActivity.java中创建方法
  3. 在onNavigationItemSelected中调用该方法
  4. content_main.xml 中添加ID为 frag_layout 的FrameLayout之后,我执行了以下步骤:

    FragDetail.java

    public class FragDetail extends Fragment {
    
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    
        View view = inflater.inflate(R.layout.frag_detail, container, false);
    
        Bundle bundle = getArguments();
    
        if(bundle != null) {
    
            TextView mText = (TextView) view.findViewById(R.id.txt_detail);
            mText.setText(bundle.getString("drawer_title"));
        }
    
        return view;
    }}
    

    frag_detail.xml

    <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">
    <TextView
        android:text="detail clicked"
        android:layout_width="wrap_content"
        android:textAppearance="@style/TextAppearance.AppCompat.Headline"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:id="@+id/txt_detail" /></RelativeLayout>
    
    MainActivity.java中的

    方法

    public FragDetail getFragment(String desc) {
    
        FragDetail frag = new FragDetail();
    
        Bundle bundle = new Bundle();
        bundle.putString("drawer_title", desc);
    
        frag.setArguments(bundle);
    
        return frag;
    }
    

    调用方法

       public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
    
        String nmClient = (String) item.getTitle();
    
        Fragment frag = getFragment(nmClient);
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    
        ft.replace(R.id.frag_layout, frag);
        ft.commit();
    
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }
    

    我实际上找到了这个link

    的解决方案