如何在Android中为已注册和未注册的用户显示不同的MenuItem?

时间:2012-02-09 11:41:25

标签: android android-layout menu sharedpreferences menuitem


下面是检查用户是否登录的代码,因此如果用户被登录,那么他将看到“greeting-layout”,否则“registration-layout”。 根据用户的状态(已注册/未注册),我想显示不同的“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 个答案:

答案 0 :(得分:1)

只需夸大不同的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。对于常见菜单项,您需要提供相同的ID。

答案 1 :(得分:-1)

你想要这样的东西吗?

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