Java 如何从导航抽屉更改表格布局的选项卡

Java 如何从导航抽屉更改表格布局的选项卡,java,android,android-fragments,navigation-drawer,Java,Android,Android Fragments,Navigation Drawer,目前我正在从NavigationDrawer更改选项卡,但这不是一种正确的方法,而且从NavigationDrawer更改选项卡需要很长时间,因为我每次都要替换选项卡的主片段,我不想要它。更多 NavigationDrawerRadapter.java public class NavDrawerListAdapter extends BaseAdapter { public Context context; public MainActivity activity; public MainT

目前我正在从
NavigationDrawer
更改选项卡,但这不是一种正确的方法,而且从
NavigationDrawer
更改选项卡需要很长时间,因为我每次都要替换选项卡的主
片段,我不想要它。更多

NavigationDrawerRadapter.java

public class NavDrawerListAdapter extends BaseAdapter {

public Context context;
public MainActivity activity;
public MainTabFragment fragment;
int currentSelectedPostion;
LayoutInflater mInflater;
TextView tv_signup;
SharedPreferences share;
boolean cbc = false;
String fis = "", las = "";
int group_id = 0;
private String[] titles;
private int[] images;
private int[] selectedposition;

public NavDrawerListAdapter(Context context, int[] selectedposition, boolean cb, String fis, String las) {
    this.context = context;
    this.images = images;
    this.cbc = cb;
    this.fis = fis;
    this.las = las;
    share = context.getSharedPreferences("sharePref", 0);
    group_id = share.getInt("group_id", 0);
    this.selectedposition = selectedposition;
    mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);

}

@Override
public int getCount() {
    return 1;
}

@Override
public Object getItem(int position) {
    return position;
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    if (convertView == null) {
        convertView = mInflater.inflate(com.cws.advisorymandi.R.layout.drawer_list_item, null);
    }
    LinearLayout ll_contact_us = (LinearLayout) convertView.findViewById(com.cws.advisorymandi.R.id.contact_item);
    RelativeLayout ll_login = (RelativeLayout) convertView.findViewById(com.cws.advisorymandi.R.id.signup_item);
    LinearLayout ll_equity = (LinearLayout) convertView.findViewById(com.cws.advisorymandi.R.id.equity_item);
    LinearLayout ll_indices = (LinearLayout) convertView.findViewById(com.cws.advisorymandi.R.id.indices_item);

    if (cbc) {
        tv_signup.setText("Welcome " + fis + " " + las);
        tv_logout.setVisibility(View.VISIBLE);
        tv_edit.setVisibility(View.VISIBLE);
    }
    ll_equity.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            MainActivity.getInstance().displayView(3, 0, 0);
        }
    });
    ll_indices.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
                 MainActivity.getInstance().displayView(3, 0, 1);
        }
    });
    });
    return convertView;
}

}
MainActivity.java

public class MainActivity extends AppCompatActivity {
  public ListView mDrawerList;
NavDrawerListAdapter adapter;
     public static MainActivity getInstance() {
    return sMainActivity;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(com.cws.advisorymandi.R.layout.activity_main)
    mDrawerList = (ListView) findViewById(com.cws.advisorymandi.R.id.list_slidermenu);
 adapter = new NavDrawerListAdapter(getApplicationContext(), selectedposition, cb, firstName, lastName);
    mDrawerList.setAdapter(adapter);

}

/**
 * Diplaying fragment view for selected nav drawer list item
 */
public int displayView(int position, int position2, int position3) {
    // update the main content by replacing fragments
    first_position = position;
    second_position = position2;
    third_position = position3;
    fragment = null;
    switch (position) {
        case 0:
            sharedPreferences = getSharedPreferences("sharePref", 0);
            cb = sharedPreferences.getBoolean("ConfirmLogin", false);
            if (cb) {
            } else new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {

                        fragment = new LoginActivity();
                        changeFragments3();
               }
            }, 150);
            mDrawerLayout.closeDrawer(mDrawerList);
            break;
        case 3:
            //    fragment = new MainTabFragment();
          /*  new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {*/
            fragment = new MainTabFragment();
                    changeFragments();
               /*}
            }, 150);
            mDrawerLayout.closeDrawer(mDrawerList);*/
            break;
 }
    return 0;
 }

}

注意:我创建每个抽屉项目时没有使用数组或arrayList,因此McClickListener不在其中工作。

是否保留每个选项卡的导航堆栈?然后在这里看我的问答:嘿@KonstantinLoginov我现在需要你的帮助。当然,@Anshul,怎么了?我今天改进了代码,但没有在这里更新。这就是我将当前片段与具有
TabLayout
的片段进行匹配的方式<代码>如果
部件对我来说工作正常,但其他情况则不行。所以我想知道如何根据我的代码使用
FragmentByID