在初始飞溅屏幕之后,无法让Android Studio应用程序启动登录屏幕



我是Java编码和Android Studio的新手,所以请忍受我。但是,我正在尝试获得一个登录屏幕,以在启动屏幕之后启动,并且在飞溅屏幕之后,应用程序崩溃。飞溅屏幕毫无问题。无论如何,这是第一组代码,这是主要活动中的启动屏幕代码。

package com.example.xxxx.safetyxxxxxxx;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
    TextView tv;
    ImageView iv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash_screen);
        tv = (TextView) findViewById(R.id.tv);
        iv = (ImageView) findViewById(R.id.imageView);
        Animation mine = AnimationUtils.loadAnimation(this, R.anim.transition);
        final Intent go = new Intent(MainActivity.this, LoginPageActivity.class);
        //set duration ... 1 second ... :p
        mine.setDuration(1000);
        tv.startAnimation(mine);
        iv.startAnimation(mine);
        //make a thread to go to second activity...
        Thread t = new Thread() {
            @Override
            public void run() {
                try {
                    sleep(5000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                } finally {
                    MainActivity.this.startActivity(go);
                    finish();
                }
            }
        };
        t.start();
    }

    }

这是我想在Splash屏幕后转到应用程序的登录页面活动,称为" loginpageactitive.java"。

package com.example.xxxx.safetyxxxxxxx;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import static com.example.xxxx.safetyxxxxxxx.R.layout.activity_login_page;
public class LoginPageActivity extends AppCompatActivity implements View.OnClickListener{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(activity_login_page);
    findViewById(R.id.textViewSignUp).setOnClickListener(this);
}

    @Override
    public void onClick(View view) {
            switch (view.getId()) {
                case R.id.textViewSignUp:
                    startActivity(new Intent(this, SignUpActivity.class));
                    break;
            }
        }
    }

这是AndroidManifest.xml代码

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.xxxx.safetyxxxxxxx">
    <application
        android:name=".Database"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".LoginPageActivity"
            android:label="@string/app_name">
    </activity>
        <activity android:name=".Main2Activity" />
        <activity android:name=".SignUpActivity" />
    </application>
</manifest>

这是logcat错误

1-28 12:55:33.490 7647-7670/com.example.xxxx.safetyxxxxxxx E/AndroidRuntime: FATAL EXCEPTION: Thread-5
                                                                              Process: com.example.xxxx.safetyxxxxxxx, PID: 7647
                                                                              android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.xxxx.safetyxxxxxxx/com.example.xxxx.safetyxxxxxxx.LoginPageActivity}; have you declared this activity in your AndroidManifest.xml?
                                                                                  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1932)
                                                                                  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1615)
                                                                                  at android.app.Activity.startActivityForResult(Activity.java:4472)
                                                                                  at android.support.v4.app.BaseFragmentActivityApi16.startActivityForResult(BaseFragmentActivityApi16.java:54)
                                                                                  at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:67)
                                                                                  at android.app.Activity.startActivityForResult(Activity.java:4430)
                                                                                  at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:720)
                                                                                  at android.app.Activity.startActivity(Activity.java:4791)
                                                                                  at android.app.Activity.startActivity(Activity.java:4759)
                                                                                  at com.example.mike.safetychecker.MainActivity$1.run(MainActivity.java:39)

也需要如果需要,文件活动_login_page.xml代码在

下方
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".LoginPageActivity">
    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:text="Hi, Welcome to Safety xxxxxx Please Login or Signup"
        android:textAlignment="center"
        android:textColor="@android:color/holo_green_dark"
        android:textSize="25sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.995"
        tools:layout_editor_absoluteX="0dp"
        tools:ignore="MissingConstraints" />
    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:text="Login"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        tools:layout_editor_absoluteY="398dp"
        tools:ignore="MissingConstraints" />
    <EditText
        android:id="@+id/editTextEmail"
        android:layout_width="346dp"
        android:layout_height="50dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:ems="10"
        android:hint="email"
        android:inputType="textEmailAddress"
        android:text=" email"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        tools:layout_editor_absoluteY="270dp"
        tools:ignore="MissingConstraints" />
    <EditText
        android:id="@+id/Password"
        android:layout_width="346dp"
        android:layout_height="50dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:ems="10"
        android:inputType="textVisiblePassword"
        android:text=" Password"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        tools:layout_editor_absoluteY="336dp"
        tools:ignore="MissingConstraints" />
    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="219dp"
        android:layout_height="229dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        app:layout_constraintBottom_toTopOf="@+id/editTextEmail"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/safetyxxxx" />
    <TextView
        android:id="@+id/textViewSignUp"
        android:layout_width="351dp"
        android:layout_height="34dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:text="Do Not Have An Account?  Click Here"
        android:textAlignment="center"
        android:textColor="@android:color/holo_green_dark"
        android:textSize="20sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.529"
        app:layout_constraintStart_toStartOf="parent"
        tools:layout_editor_absoluteY="459dp"
        tools:ignore="MissingConstraints" />
</android.support.constraint.ConstraintLayout>

还有一个Transition.xml文件包含在动画文件夹中的文件,可能会有所帮助

<?xml version="1.0" encoding="utf-8"?>
<alpha
xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromAlpha="0.0"
    android:toAlpha="1.0"
    />

您必须尝试像这样打开 LoginPageActivity

粘贴此代码

openActivity();

而不是此

Thread t = new Thread() {
            @Override
            public void run() {
                try {
                    sleep(5000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                } finally {
                    MainActivity.this.startActivity(go);
                    finish();
                }
            }
        };
        t.start();

,然后放这个方法

public void openActivity()
    {
        final Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        Intent go = new Intent(MainActivity.this,LoginPageActivity.class);
                         startActivity(go);
                        finish();
                    }
                }, 5000);
    }

导入此软件包

import android.os.Bundle;
import android.os.Handler;

,在您的清单中也提到这样的

<activity android:name=".LoginPageActivity"
        android:label="@string/app_name"/>

您必须在androidmanifest.xml中声明您的活动。几乎所有与系统相关的类都必须在其中声明,其中包括活动,服务,广播接收器。您可以在这里阅读清单的工作原理

回到您的问题,您可以通过在Android清单中的应用程序标签中添加以下行来解决它。删除您应用于它的任何意图过滤器

<activity android:name=".LoginPageActivity" />

删除:

<intent-filter>
    <action android:name="com.example.xxxx.safetyxxxxxxx.LoginPageActivity" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

因为在应用程序中总是只有一个启动器活动。

也有故意过滤器。

更改启动器在您的MainFest中默认为默认值,两个启动器是不可能的(假设MainActivity作为启动器)

</activity android:name=".LoginPageActivity>
        <intent-filter>
            <action android:name="com.example.xxxx.safetyxxxxxxx.LoginPageActivity" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

使用此

<activity android:name=".LoginPageActivity"
        android:label="@string/app_name"/>

而不是

 <activity android:name=".LoginPageActivity"
        android:label="@string/app_name">
    <intent-filter>
        <action android:name="com.example.xxxx.safetyxxxxxxx.LoginPageActivity" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
final Handler handler = new Handler();
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    Intent intent = new Intent(MainActivity.this,com.example.xxxx.safetyxxxxxxx.LoginPageActivity.class);
                     startActivity(intent);
                    finish();
                }
            }, 5000);

//其中5000是延迟时间

最新更新