Как я могу отображать различные элементы меню для зарегистрированных и незарегистрированных пользователей в Android? - PullRequest
3 голосов
/ 09 февраля 2012


Ниже приведен код, позволяющий проверить, вошел ли пользователь в систему или нет, поэтому, если пользователь вошел в систему, он увидит «приветствие-макет» или «регистрация-макет». В зависимости от статуса пользователя (зарегистрирован / не зарегистрирован) я хочу отображать различные "menuItems" или "Menu". Нужно ли создавать разные классы для зарегистрированного и незарегистрированного пользователя?

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    /* check User's "STATUS" is logged-in or not and display screen according to "STATUS"  */
    SharedPreferences prefs = getSharedPreferences("CRUMBS",MODE_PRIVATE);
    if (prefs.getString("logged", "").toString().equals("logged")) {
        setContentView(R.layout.crumbs_view_logged);

        //Display menu items > " Logout " & " Profile "

    }else{

        setContentView(R.layout.crumbs_view_default);
        //Display menu items > "Register" & " Login " 

    }

}

Заранее спасибо:)

Ответы [ 2 ]

1 голос
/ 09 февраля 2012

Просто накачайте разные menu.xml файлы.Немного похоже на

public boolean onCreateOptionsMenu(Menu menu) {
  MenuInflater inflater = getMenuInflater();
  if (loggedIn) {
      inflater.inflate(R.menu.registered,menu);
  }
  else {
      inflater.inflate(R.menu.nonRegistered,menu);
  }
  return true;
}

Где у вас есть res/menu/registered.xml для зарегистрированных пользователей и .../nonRegistered.xml для других.Для общих пунктов меню вам необходимо предоставить тот же идентификатор.

0 голосов
/ 09 февраля 2012

Вы хотите что-то подобное?

package test;

class Main {
    protected void onCreate() {
        final IUser user;
        if ("logged".equals("logged")) {
            user = new RegisteredUser();
        } else {
            user = new UnRegisteredUser(); 
        }
        user.showMenu();
    }
}

public interface IUser {
    public void showMenu();
}

class RegisteredUser implements IUser {
    @Override
    public void showMenu() {
        //Display menu items > " Logout " & " Profile "
    }
}

class UnRegisteredUser implements IUser {
    @Override
    public void showMenu() {
        //Display menu items > "Register" & " Login "
    }
}
...