0

リストからオブジェクトを削除すると同時に、フェードアウトアニメーションをユーザーにアニメーション化したい...

削除関数Threadは、スレッドでアニメーションを開始しようとしますが、その例外を取得しています:

android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that      created a view hierarchy can touch its views.

活動について:

private Animation animation;
private AnimationListener al;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.test);
    animation = AnimationUtils.loadAnimation(this, R.anim.fade_out);                
    al = new AnimationListener() {

        public void onAnimationStart(Animation animation) {
        // do nothing       
        }

        public void onAnimationRepeat(Animation animation) {
        // do nothing       
        }

        public void onAnimationEnd(Animation animation) {
            TableRow tr = (TableRow) findViewById(R.id.test);                   
            tr.setVisibility(View.GONE);
        }

    };

    animation.setAnimationListener(al);                             
    animation.reset();            
}

ユーザーが削除アイコンを押すと、ここに表示されます。

public void remove(View v) {         
    RemoveF rf = new RemoveF();
    rf.start();
}

私のトレッドはここから始まります:

class RemoveF extends Thread {
    private boolean running;

    public void run() {
        running = true;
        try {
            do {
                //business logic goes here
                TableRow tr = (TableRow) findViewById(R.id.test);
                tr.setAnimation(animation);
                tr.startAnimation(animation);
                stopRunning();
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException ie) {
                    // do nothing
                }
            } while (running);
        } catch (Exception e) {
            Log.e("RemoveF", "Exception", e);
        }
    }

    public void stopRunning() {
        running = false;
    } 
}

どのように私はそれを愛することができますか?ありがとう

4

1 に答える 1

2

ここTableRow tr = (TableRow) findViewById(R.id.test);

別のスレッドからUI要素にアクセスしようとしています。

スレッドからUIを更新するために使用runOnUiThreadするHandler

于 2012-05-11T18:58:54.843 に答える