如何在mainactivity之前获取登录活动

时间:2015-10-30 09:50:17

标签: android

是否可以在android studio中的splash和main活动之间获取登录活动。应该在启动活动之后和main.how之前获取它。

<?xml version="1.0" encoding="utf-8"?>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".Splash"
        android:label="@string/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>
    <activity android:name=".Register"
              android:label="@string/title_activity_register"
              android:theme="@style/AppTheme.NoActionBar"/>
    <activity android:name=".MainActivity"
        android:theme="@style/AppTheme.NoActionBar"/>
</application>

4 个答案:

答案 0 :(得分:1)

当您调用启动活动时,内部启动活动只需调用loginactivity,如果您正在登录活动,则在按下按钮时,请调用mainactivity。就是这样。

public class SplashActivity extends Activity {

    private final int STR_SPLASH_TIME = 3000;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        startSplashTimer();
    }

    private void startSplashTimer() {
        try {
            Timer timer = new Timer();
            timer.schedule(new TimerTask() {

                @Override
                public void run() {
                    Intent intent = new Intent(SplashActivity.this, LoginActivity.class);
                    startActivity(intent);
                    finish();
                }
            }, STR_SPLASH_TIME);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

SplashActivity ,它将转到 LoginActivity ,当按下这个按钮调用 MainActivity 后发生这种情况。

所以你的流程应该是这样的,

  

SplashActivity - &gt; LoginActivity - &gt; MainActivity

答案 1 :(得分:1)

您可以像这样更改您的清单

<application
        android:allowBackup="true"
        android:icon="@drawable/icon"
        android:label="@string/app_name"
        android:logo="@drawable/icon"
        >
        <activity
            android:name=".SplashActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".LoginPage"></activity>
        <activity android:name=".MainPage"></activity>
</application>

并确保您的意图按顺序适用

答案 2 :(得分:1)

我在两三个星期前回答了类似的问题。找到答案here

但是,在我看来,创建一个只是为了展示引人注目的活动并不是那么好。从本质上讲,您的应用应该尽可能少的活动。毫无疑问,活动是应用程序的主要和最重要的组件。因此,为了显示引人注目,您可能希望在加载更多资源之前在sizeof(textStuff)/sizeof(textStuff[0])中显示该问题。加载完所有内容后,您可以隐藏该启动并显示登录表单。

答案 3 :(得分:0)

做这样的事情:

SplashActivity.java

public class SplashActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.chat_activity);

            ...
            if(!alreadyLoggedIn()) {
                Intent intent = new Intent(SplashActivity.this, LoginActivity.class);
                startActivity(intent);
            } else {
                Intent intent = new Intent(SplashActivity.this, MainActivity.class);
                startActivity(intent);
            }
    }
}

LoginActivity.java

public class LoginActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.chat_activity);

            if(loginSuccessful()) {
                Intent intent = new Intent(LoginActivity.this, MainActivity.class);
                startActivity(intent);
            } else {
                // show ERROR
            }
    }
}
相关问题