2

onCreate メソッドに次のコードがあります。

    ImageView iv01 = (ImageView)findViewById(R.id.hexagon01);        
    iv01.setOnTouchListener(new OnTouchListener(){
        public boolean onTouch(View view, MotionEvent event) {
            Intent intent = new Intent(view.getContext(), ChoiceActivity.class);
            startActivity(intent);
            return true;
        }
    });

画像に触れると、新しいアクティビティが正しく読み込まれます。戻るボタンで戻れます。しかし、戻るボタンをもう一度押してアプリを閉じると、onTouch イベントが再び起動され、アクティビティが再度読み込まれます。どうすれば回避できますか?

ありがとう。

4

2 に答える 2

1

OnTouchListener は、いくつかの理由でトリガーされます (正確な理由を見つけるには、MotionEvent パラメーターを確認する必要があります)。OnClickListener を使用して、同じことをより簡単な方法で実現する必要があるようです。

于 2012-11-27T19:27:49.877 に答える
0

画像に触れると、新しいアクティビティが正しく読み込まれます。戻るボタンで戻れます。しかし、戻るボタンをもう一度押してアプリを閉じると、onTouch イベントが再び起動され、アクティビティが再度読み込まれます。

正直なところ、戻るボタンはアクティビティの新しいコピーを起動しません。ACTION_DOWNOnTouchListener は、 、ACTION_MOVE、およびMotionEventごとにアクティビティの新しいコピーを起動しますACTION_UP。しかし、アクティブなアクティビティを閉じようとすると、多数のアクティビティに気付くだけです...

1 つのMotionEventでのみ新しいアクティビティを起動するようにします。

public boolean onTouch(View view, MotionEvent event) {
    if(event.getAction() == MotionEvent.ACTION_UP) {
        Intent intent = new Intent(view.getContext(), ChoiceActivity.class);
        startActivity(intent);
        return true;
    }
    return false;
}

または、代わりにここでOnClickListenerを使用できます。

于 2012-11-27T19:39:28.807 に答える