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");
}
}