android - 启动屏幕后我的应用程序崩溃

标签 android crash screen splash-screen

您好,我正在开发一个应用程序,正在制作一个启动画面,然后将其转到注册画面。初始屏幕后,应用程序崩溃。

splashscreen.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splashscreen);
    Animation anim1 = AnimationUtils.loadAnimation(this,R.anim.anim_down);
    ImageView img =(ImageView)findViewById(R.id.imageView);
    img.setAnimation(anim1);

    ProgressBar mprogressBar = (ProgressBar) findViewById(R.id.progressBar);
    ObjectAnimator anim = ObjectAnimator.ofInt(mprogressBar,"progress",0,100);
    anim.setDuration(4000);
    anim.setInterpolator(new DecelerateInterpolator());
    anim.start();

    Handler handler = new Handler();

    handler.postDelayed(new Runnable() {
        @Override
        public void run() {

            startActivity(new Intent(splashscreen.this,signup.class));

        }
    },3000);

}


AndroidManfiest.xml

<uses-permission android:name="android.permission.INTERNET" />

<application
    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" />
    <activity android:name=".splashscreen">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".login" />
    <activity android:name=".signup" />
    <activity android:name=".ResetPasswordActivity" />
</application>




怎么了??请帮忙

最佳答案

如果提供错误日志会更好。但是我看到的是,您已经为ObjectAnimator动画对象提供了4000毫秒的时间。

另一方面,在3000毫秒后,您会将用户转移到“注册”活动。

因此,一旦注册活动被加载,该对象将无法找到启动画面上下文,这可能是导致应用崩溃的原因。

你可以解决

 handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            startActivity(new Intent(splashscreen.this, signup.class));
        }
    }, 4000);


或者您可以将动画侦听器用于ObjectAnimator

 ObjectAnimator anim =
            ObjectAnimator.ofInt(mprogressBar, "progress", 0, 100);
    anim.setDuration(4000);
    anim.setInterpolator(new DecelerateInterpolator());
    anim.addListener(new AnimatorListenerAdapter() {
        @Override
        public void onAnimationEnd(Animator animation) {
            startActivity(new Intent(splashscreen.this, signup.class));
        }
    });
    anim.start();


我认为第二种方法更好,因为它可以确保动画完成。

还要检查您的anim_down动画持续时间。

关于android - 启动屏幕后我的应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50215702/

相关文章:

android - 如何使用前一个 fragment 的 EditText 输入更改 fragment 中的 TextView?

javascript - 在 Phonegap Android 中存储值的最简单方法

ubuntu - 如何在 Ubuntu 9.10 中制作检查和切换屏幕方向的快捷方式/脚本

android - 在 React Native Android 应用程序中预览 Office 文档

iphone - 应用会加载默认屏幕,然后变黑或崩溃

c - 类似 Getline 的函数崩溃

android - 为什么在构建APK后我的EXPO应用程序崩溃

android - Android 上不同屏幕尺寸的不同布局?

iphone - 获取 iPhone 的物理屏幕尺寸(以英寸为单位)

android - 更新未在 Play 商店中列出的 Android 应用程序?