无法启动新活动。与onAnimationEnd有关吗?

时间:2011-11-13 08:32:34

标签: android eclipse android-activity listener android-animation

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。

这是callstack:

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

我认为callstacks应该在logcat中,但我得到'无法打开堆栈跟踪文件'/data/anr/traces.txt':权限被拒绝'错误登录logcat。 此外,应用程序似乎在显示动画f2(正在被监听的内容)之前崩溃.t2永远不会显示。

2 个答案:

答案 0 :(得分:1)

- 改变对此的表现 - 它解决了我的问题 -add点在活动名称的开头,不确定为什么或是否有必要!

<?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" />

答案 1 :(得分:0)

您似乎正在将动画侦听器添加到“fade2”动画对象中。但该动画未设置为任何视图,如

view.startAnimation(fade2);

如果没有为视图启动动画,则侦听器将不会触发。