【问题标题】:android getting variables to constructor of custom viewandroid将变量获取到自定义视图的构造函数
【发布时间】:2011-10-21 20:51:23
【问题描述】:

这里是安卓新手。

我的第一个游戏涉及一个自定义视图,它将在屏幕上绘制一个游戏板和一些记分板。我需要知道有多少玩家才能增加计分板的数量,并且我需要在自定义视图的构造函数中知道这一点,以便及时初始化适当的变量。

我目前的实现是这样的,这是将变量放入自定义视图构造函数的正确方法吗?...

我从我的活动中实例化自定义视图,如下所示:

numPlayers=2;
setContentView(R.layout.gamescreen);
mBoardView = (BoardView) findViewById(R.id.board_view);

并在自定义视图构造函数中:

public BoardView(Context context, AttributeSet attrs){
            super(context, attrs);
vNumPlayers = ((GuappsXOMainGame)getContext()).getNumP(); 

这就是我现在拥有它的方式,它似乎工作得很好,但是按照这个问题的答案做一些事情会更好吗:?

android:how to instantiate my custom view with attributeset constructor

【问题讨论】:

  • 我认为答案取决于您的自定义视图是否是该活动中的唯一视图?

标签: android


【解决方案1】:

当自定义视图(或 SurfaceView)是唯一的视图时,通常在游戏中,通过在 setContentView() 之前创建此视图的实例,很容易传递关卡、玩家、声音等参数。一个例子:

MyView myView = new MyView(level, players, soundOn);
setContentView(myView);

在您的情况下,您的自定义视图在创建布局时被实例化,因此您必须与活动对象进行通信以获取值。这也是可能的。我通过在调用 setContentView(my_layout) 之前在活动中设置静态变量然后在自定义视图的构造函数中说 level = MyActivity.level

或者也许你已经在做的方式是获取活动的实例并调用公共方法或变量。

在您提供的链接中,一个属性“硬连线”到 XML 布局中。我看不到这样做的好处,当人们可以简单地将值作为“最终”变量输入到自定义视图类本身时。

【讨论】:

  • 谢谢,这对我来说很有意义。
猜你喜欢
  • 2011-02-22
  • 1970-01-01
  • 1970-01-01
  • 2018-05-04
  • 1970-01-01
  • 2011-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多