如何在android studio中的启动画面后启动另一个活动

时间:2016-11-08 05:58:36

标签: java android android-studio

大家好我现在正在学习并在android studio中开发应用程序。我的问题是我无法在启动画面后继续我的登录活动。我已经查看了net和stackoverflow并应用了它,但仍然是同样的错误。我感谢您的帮助和回答。

以下是我的一些代码

SplashScreen.java

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            final Intent mainIntent =  new Intent(SplashScreen.this, Login.class);
            SplashScreen.this.startActivity(mainIntent);
            SplashScreen.this.finish();
        }
    },3000);

}

Login.java

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.login);

    Intent intent = new Intent(Login.this, MainActivity.class);
    startActivity(intent);
    finish();
  }

的AndroidManifest.xml

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

<application
    android:allowBackup="true"
    android:icon="@mipmap/logo"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".SplashScreen"
        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=".Login"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".Login"/>
    </activity>
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="com.ex.app.MainActivity" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
</application>

我哪里出错?

5 个答案:

答案 0 :(得分:0)

由于您已编写代码以MainActivity移至onCreate <{1}}

Login.java

注释此行或将其保留在SignIn按钮的

答案 1 :(得分:0)

您的登录活动只会将您引导至创建

上的MainActivity

看看这些行

Intent intent = new Intent(Login.this, MainActivity.class);
startActivity(intent);

答案 2 :(得分:0)

它会直接重定向到MainActivity,就像您在LoginActivity onCreate中编写的那样

Intent intent = new Intent(Login.this, MainActivity.class);
startActivity(intent);
finish();

没有任何条件。通过设置登录检查条件和标准使其成为条件

if (<logged_in_your_condition_Check>){
    Intent intent = new Intent(Login.this, MainActivity.class);
    startActivity(intent);
    finish();
}

答案 3 :(得分:0)

为什么在Login.class

中需要以下行
 Intent intent = new Intent(Login.this, MainActivity.class);
    startActivity(intent);
    finish();

如果你在onCreate()中使用finish()那么它会立即调用onDestroy()并且没有任何意义。

从onCreate中移除上面给出的代码,您的代码将起作用

答案 4 :(得分:0)

在清单中写入:

<activity
android:name=".MySplashActivity"
android:noHistory="true"
 ..... >
    ....
</activity>

然后在 create() 或其他地方调用该方法:

 private static int SPLASH_TIME_OUT=2000;

 
private void nextScreen() {
    new Handler().postDelayed(()-> {
            Intent intent = new Intent(MySplashaActivity.this, NextActivity.class);
            startActivity(intent);
            finish();
    }, SPLASH_TIME_OUT);
}