是否可以在扩展视图的类中使用intent?

时间:2013-01-08 17:58:09

标签: android class android-intent view

我正在为Android制作一款基于回合制的RPG游戏。我有一个类扩展了一个视图,我需要启动另一个类也扩展视图。第一类是玩家在地图上走动的地方,第二类是战斗画面。我试图让它工作,但我得到了这个错误。

The constructor Intent(GameView, Class<BattleView>) is undefined

我以前使用过Intent而没有任何问题,但我从未尝试在扩展视图的类中使用intent。我认为这就是我遇到问题的原因。 是否可以在扩展视图的类中使用intent?

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您正在寻找的Intent的构造函数需要一个上下文,然后是您要启动的类(一个活动)。

从您的视图课程中,您应该能够这样做:

Intent intentToLaunch = new Intent(getContext(), BattleView.class);

这将正确创建您的Intent,但除非您将Activity传递给视图,否则您将无法从视图中启动Activity,这是一个非常糟糕的主意。实际上这是一个糟糕的设计,因为您的观点不应该是启动其他活动。相反,您的视图应调用该视图的创建者将响应的接口。

它可能看起来像这样:

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。