3

私はクラスGameActivityを持っていて、そこにメソッドがありsetContentView(GameView)ます。GameView拡張するクラスでView、私はメソッドを持っています:

public class GameView extends View{
...
    public boolean onTouchEvent(MotionEvent event){
         switch(event.getAction()){ 
           case MotionEvent.ACTION_DOWN:    
            Intent intent = new Intent (contexTmp, MainActivity.class); 
            contexTmp.startActivity(intent); 
            //finish(); //->how to finish this activity from class view 
        }
    }
}

GameViewクラスのメソッドonTouchEvent()でボタンを押したときにわかるように、アクティビティをに変更していMainActivityます。私の問題は、クラスビューからアクティビティを終了する方法です(最初に現在のアクティビティを終了し、その後次のアクティビティに進む必要があります)。メソッド: finish()が機能しないためです。

4

2 に答える 2

4

getContext()ビューの作成に使用されたアクティビティ コンテキストを返すを使用します。

public boolean onTouchEvent(MotionEvent event) {
    switch(event.getAction()) { 
       case MotionEvent.ACTION_DOWN: 
          ...   
          ((Activity)getContext()).finish();
    }
}
于 2012-07-26T22:54:35.797 に答える
1

GameView がアクティビティのビューの 1 つである限り、次のように簡単に呼び出すことができます。

((Activity)getContext()).finish();

これは、ビューを作成したアクティビティのコンテキストになります。そのため、それが終了したいアクティビティであることを確認してください。

于 2012-07-26T22:55:22.537 に答える