Невозможно запустить новое действие. Что-то связанное с OnAnimationEnd? - PullRequest
0 голосов
/ 13 ноября 2011

Код для QuizSplashActivity:

package com.androidbook.triviaquiz;

import java.text.DateFormat;
import java.util.Date;

import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.AnimationUtils;
import android.view.animation.LayoutAnimationController;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;

public class QuizSplashActivity extends QuizActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String rest="First Time Launched";



        String launchd=DateFormat.getDateInstance().format(new Date());
        String launcht=DateFormat.getTimeInstance().format(new Date());
        String ldt=launchd+" "+launcht;

        SharedPreferences set=getSharedPreferences(GAME_PREFERENCES,MODE_PRIVATE);
        if(set.contains("lastLaunch"))
        {rest=set.getString("lastLaunch", "default");

        }
        Log.i("LaunchInfo",rest);

        SharedPreferences.Editor edit=set.edit();

        edit.putString("lastLaunch",ldt);
        edit.commit();


        setContentView(R.layout.splash);
        anime();
    }

    private void anime()
    {TextView t1=(TextView)findViewById(R.id.TextViewTopTitle);
    Animation f1=AnimationUtils.loadAnimation(this, R.anim.fade_in);
    t1.startAnimation(f1);
    TextView t2=(TextView)findViewById(R.id.TextViewBotTitle);
    Animation f2=AnimationUtils.loadAnimation(this, R.anim.fade_in2);

    //t2.startAnimation(f2);
   // Animation fade2 =AnimationUtils.loadAnimation(this, R.anim.fade_in2);
    //View.startAnimation(fade2);
    t2.startAnimation(f2);

    AnimationListener animListener=new AnimationListener() {
        public void onAnimationEnd(Animation animation){
            startActivity(new Intent(QuizSplashActivity.this,QuizMenuActivity.class));
            QuizSplashActivity.this.finish();

        }


        public void onAnimationRepeat(Animation animation) {
        }

        public void onAnimationStart(Animation animation) {
        }


    };
    f2.setAnimationListener(animListener);
    Animation spinin=AnimationUtils.loadAnimation(this,R.anim.custom_anim);
    LayoutAnimationController controller=new LayoutAnimationController(spinin);
    TableLayout tb=(TableLayout) findViewById(R.id.tableLayout1);
    for(int i=0;i<tb.getChildCount();i++)
    {TableRow row=(TableRow) tb.getChildAt(i);
    row.setLayoutAnimation(controller);

    }


    }
    @Override
    protected void onPause()
    {super.onPause();
    TextView t1=(TextView)findViewById(R.id.TextViewTopTitle);
    t1.clearAnimation();
    TextView t2 =(TextView)findViewById(R.id.TextViewBotTitle);
    t2.clearAnimation();
    TableLayout tb=(TableLayout) findViewById(R.id.tableLayout1);
    for(int i=0;i<tb.getChildCount();i++)
    {TableRow row=(TableRow) tb.getChildAt(i);
    row.clearAnimation();

    }


    }
    @Override
    protected void onResume()
    {super.onResume();
    anime();

    }


}

Код для QuizMenuActivity

package com.androidbook.triviaquiz;


import android.os.Bundle;

public class QuizMenuActivity extends QuizActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu);
    }
}

После воспроизведения анимации в заставке (в частности, fade_in2) предполагается, что QuizMenuActivityзапустил и выплеск закончен.Анимации воспроизводятся нормально, но, похоже, QuizMenuActivity не запускается.Играя с отладчиком / точками останова, кажется, что поток программы никогда не переходит в метод onAnimationEnd (анимация анимации).Хотя я могу ошибаться, так как я довольно плохо знаком с Eclipse и Android.

Я исправил код, основанный на первом ответе, и обновил его. Теперь список запускается, но после запуска я получаю 'приложениебыл неожиданно остановлен. Пожалуйста, попробуйте еще раз. Принудительно закройте '. Кажется, что находится в то, что называется ZygoteInit $ MethodAnd.

Является ли это стека вызовов:

tiv [Android Application]   
    DalvikVM[localhost:8612]    
        Thread [<3> main] (Running) 
        Thread [<13> Binder Thread #2] (Running)    
        Thread [<11> Binder Thread #1] (Running)    

Я думаю, что стеки вызовов должны быть в logcat, но я получаю «Невозможно открыть файл трассировки стека» / data / anr / traces.TXT: «Отказано в доступе» журнал ошибок в logcat.Кроме того, приложение, по-видимому, аварийно завершает работу до отображения анимации f2 (то, что прослушивается). T2 никогда не отображается.

Ответы [ 2 ]

1 голос
/ 25 августа 2012

- изменить манифест к этому - Это решило мою проблему -добавить точку в начале названия деятельности, не уверен, почему или если это необходимо!

<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.androidbook.triviaquiz7"
    android:versionCode="1"
    android:versionName="1.0">
<application
    android:label="@string/app_name"
    android:debuggable="true"
    android:icon="@drawable/quizicon">
    <activity
        android:name=".QuizSplashActivity"
        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=".QuizGameActivity"></activity>
    <activity
        android:name=".QuizSettingsActivity"></activity>
    <activity
        android:name=".QuizScoresActivity"></activity>
    <activity
        android:name=".QuizHelpActivity"></activity>
    <activity
        android:name=".QuizMenuActivity"></activity>
</application>
<uses-sdk
    android:minSdkVersion="7" />

0 голосов
/ 13 ноября 2011

Кажется, вы добавляете слушателя анимации к объекту анимации 'fade2'. Но эта анимация не настроена ни на один вид, например

view.startAnimation(fade2);

Без запуска анимации для вида слушатель не будет запускаться.

...