Android:不同的activity_main.xml,具体取决于用户的优先级

时间:2017-01-21 08:40:12

标签: android

现在我正在尝试根据存储在服务器端数据库中的用户的角色来实现应用程序的不同主要活动。登录后,它将返回设备。

这里Single application with different UIs depending on the user's role有一个类似于我想要达到的主题,但它没有提供我想要实现的目标。

我所做的是在MainActivity的onCreate()中加载登录活动。之后,我检查角色,并根据我使用:

if (some condition here){
    //here I set the activity_main.xml
} else if (condition again) {
    //another variant of activity_main.xml
}

这是正确的变体吗?如果没有,有没有其他方法来实现这一目标?顺便说一句,当我将用户界面元素连接到相应条件块之外的xml值时,我会在以后继续获得NullPointerException,即使我使用最具特权的用户的登录凭据,其界面具有最大元素(名称为所有xml布局中的视图都是相同的,文件只在元素数量上有所不同。)

当然,我知道我会被建议使用登录界面作为我的应用程序的主要部分(如上面建议的链接),但是每次启动时应用程序都不需要登录,因此我真的不明白如何实现所有这些。

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您可以根据onCreate():setContentView(R.layout.your_layout);中的条件对不同的布局进行充气。确保不要初始化您在布局中未使用的小部件,因为这可能会导致错误。

更完整的例子:

@Override
protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (condition1)
        setContentView(R.layout.your_layout1);
    else
        setContentView(R.layout.your_layout2);
}

我还建议在出现问题时留下else条件,因此它会加载布局而不是使应用程序崩溃。

答案 1 :(得分:0)

我的建议是,假设您有**activity_main.xml****activity_main_two.xml**作为2 xml个文件,每个文件都有不同的角色, 检查登录部分中的密码用户名,以验证用户登录的类型,然后再制作逻辑。

假设公司中有两个用户经理员工

E,如下所示 伪代码

if (user_is_an_executive){
 setContentView(R.layout.activity_main.xml);
}
else if (user_is_another_employee){
setContentView(R.layout.activity_main_two.xml );
}

注意:

将其放在onCreate方法