有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何引导用户进行特定的活动?

我正在开发一个应用程序,当用户第一次安装它时,在MainActivity(Launcher Activity)中,应用程序会询问他是哪种类型的用户(比如说司机或骑手)?根据用户选择,他被引导到相应的登录屏幕。用户登录后,他直接进入HomeActivity。如果他在不注销的情况下关闭应用程序,下次打开应用程序时,他应该直接看到HomeActivity(基于他选择的用户类型)。对于一个用户,main活动中的代码如下:

@Override
protected void onStart() {
    super.onStart();

    // Check if user is signed in (non-null) and update UI accordingly.
    FirebaseAuth mAuth = FirebaseAuth.getInstance();
    FirebaseUser currentUser = mAuth.getCurrentUser();
    if (currentUser != null) {
        sendToStart();

    }
}

private void sendToStart() {

    Intent startIntent = new Intent(MainActivity.this,DriverHomeActivity.class);
    startActivity(startIntent);
    finish();
}

我是Android和Firebase的新手。我不知道这应该如何为两种类型的用户完成


共 (3) 个答案

  1. # 1 楼答案

    您的问题可以通过使用SharedPreference机制来解决。 在这里,您可以在SharedPreference中保持登录状态,如下:-

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(); 
    prefs.edit().putBoolean("login", true).commit();
    

    当用户无法注销并返回时,应使用SharedPreference变量在启动屏幕中检查登录状态,并将用户移动到相应的活动

    布尔逻辑状态=prefs。getBoolean(“登录”,false)

    if (loginStatus) {
    // Move to Home activity
    } else {
    //Move to login screen
    }
    

    小文档here

  2. # 2 楼答案

    您可以考虑在您的Android应用程序中保留^ {},它将决定进一步启动哪个活动。示例LauncherActivity可能如下所示

    public class LauncherActivity extends AppCompatActivity {
    
        private boolean loggedIn = false;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            boolean isLoggedInAsDriver = getSharedPreferences.getBoolean("is_driver", false);
            startApplication(isLoggedInAsDriver);
            finish();
        }
    
        private void startApplication(boolean isLoggedInAsDriver) {
            Intent intent;
            if (isLoggedInAsDriver) {
                intent = new Intent(LauncherActivity.this, DriverActivity.class);
                startActivity(intent);
                finish();
            } else {
                intent = new Intent(LauncherActivity.this, RiderActivity.class);
                startActivity(intent);
                finish();
            }
        }
    }
    

    您的应用程序只能有一个启动器,因此在AndroidManifest.xml中将LauncherActivity标记为android应用程序的启动器,如下所示

    <activity
        android:name=".LauncherActivity"
        android:label="Your app name"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    

    现在您可能已经注意到,我使用了一个标志(即isLoggedInAsDriver)从LauncherActivity开始所需的活动。这是一个首选项数据,当您可以确定用户是驾驶员还是骑手时,需要将其存储在SharedPreferences中。然后每次应用程序通过LauncherActivity启动时,检查存储的值并获取用户类型。根据用户类型,启动第二个活动

  3. # 3 楼答案

    在清单中使用此代码 而且 您应该在数据库中保存用户类型和用户ID,并在应用程序启动时首先检查这一点,然后显示主页

    <activity android:name=".MainActivity/>    
        <activity android:name=".DriverHomeActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
    
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>