Мое приложение вылетает после заставки - PullRequest
0 голосов
/ 07 мая 2018

Здравствуйте, я работаю над приложением и создаю заставку, которая затем переходит на экран регистрации. Приложение падает после заставки.

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>

Что не так ?? Пожалуйста, помогите

1 Ответ

0 голосов
/ 07 мая 2018

Будет лучше, если вы дадите свой журнал ошибок.Но я вижу, что Вы дали 4000 мсек своему объектному анимированному объекту ObjectAnimator.

С другой стороны, после 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 продолжительность анимации.

...