探しているIntentのコンストラクターは、コンテキストと、起動するクラス (アクティビティ) を受け取ります。
あなたのビュークラスから、これを行うことができるはずです:
Intent intentToLaunch = new Intent(getContext(), BattleView.class);
これによりインテントが正しく作成されますが、アクティビティをビューに渡さない限り、ビューからアクティビティを起動することはできません。これは非常に悪い考えです。ビューが他のアクティビティを起動してはならないため、実際にはこれは貧弱な設計です。代わりに、ビューは、そのビューの作成者が応答するインターフェースを呼び出す必要があります。
次のようになります。
public class GameView extends View {
public interface GameViewInterface {
void onEnterBattlefield();
}
private GameViewInterface mGameViewInterface;
public GameView(Context context, GameViewInterface gameViewCallbacks) {
super(context);
mGameViewInterface = gameViewCallbacks;
}
//I have no idea where you are determining that they've entered the battlefield but lets pretend it's in the draw method
@Override
public void draw(Canvas canvas) {
if (theyEnteredTheBattlefield) {
mGameViewInterface.onEnterBattlefield();
}
}
}
ほとんどの場合、Activity クラスからこのビューを作成しているので、そのクラスで GameViewInterface のインスタンスを作成するだけです。Activity で onEnterBattlefield() の呼び出しを受け取ったら、先ほど示した意図で startActivity を呼び出します。