0

I'm new to android and i was having a problem regarding my drawer. I have several options in my navigation drawer. In my home page there is a default list of items inside the drawer. When the user logs in it changes depends on the status of the user.

So my problem is in my default list of items in my drawer are: News Log in About

when i login for example regular employee it must changes to different list like News Profile Application Payment About Log out

and so on...

but instead showing those items it first displays News Log in About Payment About Log out

the Log in and About which has been displayed from the previous items is still display even if i .remove it() i even use .clear() when I debug it, it removes and clear it but still the output displays the previous items but when i scroll down it changes to what i wanted to display, it also happens when i click on one of the items.

can anyone help me about it please? Thank you so much.

here is my code.

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");
    }
}
Kairi San
  • 239
  • 1
  • 9
  • 23

0 Answers0