我正在实现其中有两种类型的用户的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应用程序中是否有标准方法说明如何处理此问题?如果没有,是否有比上例所示的方法更好的方法?
您可以为每种用户类型使用一个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();
这样,您将拥有简洁的体系结构,可以分别更改每个片段