Android 即使在notifyDataSetChanged之后,抽屉中的旧标题仍会显示,仅在单击标题后更新

Android 即使在notifyDataSetChanged之后,抽屉中的旧标题仍会显示,仅在单击标题后更新,android,drawer,notifydatasetchanged,Android,Drawer,Notifydatasetchanged,我是android新手,我的抽屉有问题。 我的导航抽屉里有几个选项。在我的主页上,抽屉里有一个默认的物品列表。用户登录时,其更改取决于用户的状态 因此,我的问题在于我抽屉中的默认项目列表是: 消息 登录 关于 例如,当我登录正式员工时 它必须更改为不同的列表,如 消息 轮廓 应用 付款 关于 注销 等等 而是显示它首先显示的项目 消息 登录 关于 付款 关于 注销 从以前的项目中显示的登录和关于它的信息即使在我使用时仍会显示。删除它我甚至会使用它。清除调试它时,它会删除并清除它,但输出仍会显示以

我是android新手,我的抽屉有问题。 我的导航抽屉里有几个选项。在我的主页上,抽屉里有一个默认的物品列表。用户登录时,其更改取决于用户的状态

因此,我的问题在于我抽屉中的默认项目列表是: 消息 登录 关于

例如,当我登录正式员工时 它必须更改为不同的列表,如 消息 轮廓 应用 付款 关于 注销

等等

而是显示它首先显示的项目 消息 登录 关于 付款 关于 注销

从以前的项目中显示的登录和关于它的信息即使在我使用时仍会显示。删除它我甚至会使用它。清除调试它时,它会删除并清除它,但输出仍会显示以前的项目,但当我向下滚动它时,它会更改为我想要显示的内容,当我单击其中一个项目时,它也会发生

谁能帮我一下吗?非常感谢你

这是我的密码

public class  MainActivity extends ActionBarActivity implements LoginFragment.StatusListener, View.OnClickListener,
    HomeEmployeeFragment.HomeStatusListener, HomeEmployerFragment.HomeStatusEmprListener {
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;

// nav drawer title
private CharSequence mDrawerTitle;

// used to store app title
private CharSequence mTitle;

// slide menu items
private String[] navMenuTitles;

private ArrayList<NavDrawerItem> navDrawerItems;
private NavDrawerListAdapter drawer_adapter;

String status;

SharedPreferences shared;
SharedPreferences.Editor edit;

final String TAG = "MainActivity";

public void onLogin(String stat){
    Log.d(TAG, "Status login: " + stat);
    edit.putString("Status", stat);
    edit.commit();
}

public void onHomeEmployee(String stat){
    Log.d(TAG, "Status HomEmp: " + stat);
    navDrawerItems.clear();
    updateDrawer();
    edit.putString("Status", stat);
    edit.commit();
}

public void onHomeEmployer(String stat){
    Log.d(TAG, "Status: " + stat);
    navDrawerItems.clear();
    updateDrawer();
    edit.putString("Status", stat);
    edit.commit();
}

@Override
protected void onResume() {
    super.onResume();
}

protected void onPause(){
    super.onPause();
}


@Override
protected void onStart() {
    super.onStart();
}

private void displayDrawer() {
    //start for drawer
    mTitle = mDrawerTitle = getTitle();

    // load slide menu items
    navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items);
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerList = (ListView) findViewById(R.id.list_slidermenu);

    navDrawerItems = new ArrayList<NavDrawerItem>();
    navDrawerItems.clear();
    updateDrawer();

    // setting the nav drawer list adapter
    drawer_adapter = new NavDrawerListAdapter(getApplicationContext(), navDrawerItems);
    mDrawerList.setAdapter(drawer_adapter);
    drawer_adapter.notifyDataSetChanged();

    //replace getActionBar with getSupportActionBar
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);

    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
            R.string.app_name, // nav drawer open - description for accessibility
            R.string.app_name // nav drawer close - description for accessibility
    ){
        public void onDrawerClosed(View view) {
            getSupportActionBar().setTitle(mTitle);
            invalidateOptionsMenu();
        }

        public void onDrawerOpened(View drawerView) {
            getSupportActionBar().setTitle(mDrawerTitle);
            invalidateOptionsMenu();
        }
    };
    mDrawerLayout.setDrawerListener(mDrawerToggle);
    mDrawerList.setOnItemClickListener(new SlideMenuClickListener());
}

private void updateDrawer(){
    navDrawerItems.clear();
    status = shared.getString("Status", "");

    if(status != null) {
        if(status.equals("employee")) {
            Log.d(TAG, "employee drawer");
            navDrawerItems.clear();

            navDrawerItems.remove(new NavDrawerItem(navMenuTitles[1])); // login
            navDrawerItems.remove(new NavDrawerItem(navMenuTitles[2])); // about


            //News
            navDrawerItems.add(new NavDrawerItem(navMenuTitles[0]));
            //Profile
            navDrawerItems.add(new NavDrawerItem(navMenuTitles[4]));
            //Application
            navDrawerItems.add(new NavDrawerItem(navMenuTitles[6]));
            //Payments
            navDrawerItems.add(new NavDrawerItem(navMenuTitles[8]));
            //Notification
            navDrawerItems.add(new NavDrawerItem(navMenuTitles[10]));
            //Message
            navDrawerItems.add(new NavDrawerItem(navMenuTitles[12]));
            // About
            navDrawerItems.add(new NavDrawerItem(navMenuTitles[2]));
            //Log out
            navDrawerItems.add(new NavDrawerItem(navMenuTitles[13]));

        } else if (status.equals("employer")) {
            Log.d(TAG, "employer drawer");
            navDrawerItems.clear();
            navDrawerItems.remove(new NavDrawerItem(navMenuTitles[1])); // login
            navDrawerItems.remove(new NavDrawerItem(navMenuTitles[2])); // about

            //News
            navDrawerItems.add(new NavDrawerItem(navMenuTitles[0]));
            //Employer Profile
            navDrawerItems.add(new NavDrawerItem(navMenuTitles[14]));
            //Message
            navDrawerItems.add(new NavDrawerItem(navMenuTitles[12]));
            // About
            navDrawerItems.add(new NavDrawerItem(navMenuTitles[2]));
            //Log out
            navDrawerItems.add(new NavDrawerItem(navMenuTitles[13]));

        } else {
            Log.d(TAG, "default drawer 1");
            navDrawerItems.clear();
            //News
            navDrawerItems.add(new NavDrawerItem(navMenuTitles[0]));
            // Login
            navDrawerItems.add(new NavDrawerItem(navMenuTitles[1]));
            // About
            navDrawerItems.add(new NavDrawerItem(navMenuTitles[2]));
        }
    } else {
        Log.d(TAG, "default drawer 2");

        //Members News
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[0]));
        // Login
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[1]));
        // About
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[2]));
    }
}


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    shared = getSharedPreferences("SSSPref", Context.MODE_PRIVATE);
    edit = shared.edit();

//        status = shared.getString("Status", "");

    getSupportActionBar().setLogo(R.drawable.toolbarimage);
    getSupportActionBar().setDisplayUseLogoEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);

    displayDrawer();

    if (savedInstanceState == null) {
        // on first time display view for first nav item
        displayView(0);
    }

    initControls();
}

private class SlideMenuClickListener implements
        ListView.OnItemClickListener {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
                            long id) {
        // display view for selected nav drawer item
        displayView(position);
    }
}

private void displayView(int position) {
    // update the main content by replacing fragments
    Context context = getApplicationContext();
    CharSequence text = "This is not yet available";
    int duration = Toast.LENGTH_SHORT;

    Toast toast = Toast.makeText(context, text, duration);

    Fragment fragment = null;
    Intent i;
    switch (position) {
        case 0:
            if(status.equals("employee")){
                fragment = new HomeEmployeeFragment();
            }else if(status.equals("employer")){
                fragment = new HomeEmployerFragment();
            }else{
                fragment = new HomeFragment();
            }

            break;
        case 1:
            if(status.equals("employee")){
                fragment = new EmpProfileFragment();
                btn_login_reg.setEnabled(false);
            }else if(status.equals("employer")){
                fragment = new EmprProfileFragment();
            }else{
                fragment = new LoginFragment();
            }
            break;
        case 2:
            if(status.equals("employee")){
                toast.show();
            }else if(status.equals("employer")){
                toast.show();
            }else {
                fragment = new AboutFragment();
            }
            break;
        case 3:
            if(status.equals("employee")){
                fragment = new LoanApplicationFragment();
            }else if(status.equals("employer")){
                toast.show();
            }else {
                toast.show();
            }
            break;
        case 4:
            if(status.equals("employee")){
                fragment = new DetailFragment();
            }else if(status.equals("employer")){
                toast.show();
            }else {
                toast.show();
            }
            break;
        case 5:
            if(status.equals("employee")){
                toast.show();
            }else if(status.equals("employer")){
                toast.show();
            }else{

            }
            break;
        case 6:
            if(status.equals("employee")){
                fragment = new LoanEligibilityFragment();
            }else if(status.equals("employer")){
                fragment = new AboutFragment();
            }else {
                toast.show();
            }
            break;
        case 7:
            if(status.equals("employee")){
                toast.show();
            }else if(status.equals("employer")){
                i = new Intent(this, MainActivity.class);
                startActivity(i);
                finish();
                edit.remove("Status");
                edit.commit();
            }else{

            }
            break;
        case 8:
            if(status.equals("employee")){
                toast.show();
            }else if(status.equals("employer")){
                toast.show();
            }else{
                toast.show();
            }
            break;
        case 9:
            if(status.equals("employee")){
                toast.show();
            }else if(status.equals("employer")){
                fragment = new AboutFragment();
            }else{

            }

            break;
        case 10:
            if(status.equals("employee")){
                fragment = new AboutFragment();
            }else if(status.equals("employer")){
                toast.show();
            }else{
                toast.show();
            }
            break;
        case 11:
            i = new Intent(this, MainActivity.class);
            startActivity(i);
            finish();
            edit.remove("Status");
            edit.commit();
            break;
        default:
            fragment = new HomeFragment();
            break;
    }

    if (fragment != null) {
        FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction()
                .replace(R.id.frame_container, fragment).commit();

        // update selected item and title, then close the drawer
        mDrawerList.setItemChecked(position, true);
        mDrawerList.setSelection(position);
        setTitle(navMenuTitles[position]);
        mDrawerLayout.closeDrawer(mDrawerList);
    } else {
        // error in creating fragment
        Log.e("MainActivity", "Error in creating fragment");
    }
}

notifyDataSetChanged更改列表中的项目,但不更改操作栏标题。我通过在updateDrawer之后再次调用notifyDataSetChanged解决了此问题。谢谢