如何在导航抽屉上动态添加项目点击

How can I add item clicks dynamically on navigation drawer

我在动态添加项目到导航抽屉时遇到问题,我已经解决了像这样添加项目的部分

`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. 使用 bundle 及其布局创建一个片段
  2. 在 MainActivity.java
  3. 中创建方法
  4. 在 onNavigationItemSelected 中调用该方法

content_main.xml 中添加 FrameLayout 并使用 id frag_layout 后,我执行了以下步骤:

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

中找到了解决方案