如何基于用户角色控制Java android应用程序中组件的可见性?

问题描述 投票:0回答:1

我正在实现其中有两种类型的用户的Android Java应用程序。他们每个人都有权使用某些应用程序功能,但不是全部。

我当前的实现包括每次将用户重定向到同一活动时,都在一个活动中设置所有组件的可见性。示例:

protected void onCreate(Bundle savedInstanceState) {
    if(!userLoggedIn()) {
        // Set all visibilities
    } else if (loggedUserType() == UserType.USER1) {
        // Set all visibilities
    } else {
        // Set all visibilities
    }
}

Android Java应用程序中是否有标准方法说明如何处理此问题?如果没有,是否有比上例所示的方法更好的方法?

java android user-permissions user-management
1个回答
0
投票

您可以为每种用户类型使用一个fragment,并在您的活动中显示该片段。在活动布局内添加一个容器。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    //rest of activty views

    <FrameLayout 
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</RelativeLayout>

并根据用户类型创建并添加您的片段

FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
ExampleFragment fragment;
if(!userLoggedIn()) {
    fragment = new ExampleFragment1();
} else if (loggedUserType() == UserType.USER1) {
    fragment = new ExampleFragment2();
} else {
    fragment = new ExampleFragment3 ();
}
fragmentTransaction.add(R.id.fragment_container, fragment);
fragmentTransaction.commit();

这样,您将拥有简洁的体系结构,可以分别更改每个片段

© www.soinside.com 2019 - 2024. All rights reserved.