Как управлять видимостью компонентов в Java android приложениях в зависимости от роли пользователя? - PullRequest
0 голосов
/ 02 февраля 2020

Я реализую 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 приложениях, в которых указано, как решить эту проблему? Если нет, есть ли лучший подход, чем тот, который показан в примере выше?

1 Ответ

0 голосов
/ 02 февраля 2020

вы можете иметь один фрагмент для каждого типа пользователя и показывать этот фрагмент внутри своей деятельности. внутри макета вашей деятельности добавьте контейнер.

<?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();

таким образом, вы получите чистую архитектуру и сможете изменять каждый фрагмент отдельно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...