2012-04-11 30 views
1

好吧,我决定省略任何代码,因为我认为大多数人都会理解我正在尝试做什么。如何从自定义视图中更改TextView

基本上我有布局,一个TextView和一个名为GameGraphics的自定义视图,它们都以编程方式添加到我的Activity的onCreate中。 GameGraphics View是一个自定义视图,其中所有的交互和绘图(基本游戏)发生。 TextView的显示信息,诸如得分或currentPlayer转等等等等

从GameGraphics'构造,其中我已经添加了OnTouchListener即

this.setOnTouchListener(new View.OnTouchListener() { 
     public boolean onTouch(View v, MotionEvent event) { 
      if(event.getAction() == MotionEvent.ACTION_DOWN) { 
      // ALL GAME LOGIC GOES HERE  
          } 
          return true; 
    }}); 

现在内发生游戏的整个相互作用,我可以只是自定义视图用完了整个屏幕并在画布上绘制文本反馈,但是为了学习的目的,我想使用TextView。所以我正在尝试如何根据GameGraphics自定义视图来了解如何在游戏进行时更改TextView文本。所以最终我试图让TextView“听”到自定义的GameGraphics视图,并用诸如score,currentPlayer等变量重新绘制自己。

我明白我是怎么试着去做的不会去工作......我猜你不能让视图请求不同的视图重绘自己,而视图仍然在绘制...或类似的东西。

我真的没有想法。我假设我可能想出如果有人能够告诉我一些有关按钮的事情该做什么,并且当按下该按钮时,TextView的文本会变成其他内容。这是我想要做的最终目标吗?

我将继续寻找在此期间...

+1

当初始化它时(如果我理解你正在尝试做什么),你可以获得对'TextView'的引用并将它提供给'GameGraphics'' View'。然后你可以使用该参考来做你想做的事。 Lunar Lander样本具有类似于http://developer.android.com/resources/samples/LunarLander/src/com/example/android/lunarlander/index.html的内容。 – Luksprog 2012-04-11 12:51:30

回答

0

是否可以为你做你的游戏逻辑在您的主要活动,而不是在GameGraphics类?这样你就可以处理你创建的TextView对象,并且可以随时在TextView上使用.setText(“你的字符串”)。希望这有帮助,请让我知道,如果我误解了。

0

该解决方案归结为使用Java语言元素。我们所做的是创建一个抽象侦听器类作为控制游戏视图的同一类的成员。然后在活动中创建该类的一个实例并实现您创建的抽象方法。

class gameGraphics 
{ 
    public abstract class DataListener 
    { 
     public abstract void updateScore(String data); 
    } 
    private DataListener listener; 
    public gameGraphics(DataListener listener){ 
     this.listener = listener; 
    } 
    private TheMethodThatGetsCalledWhenThingsChange(){ 
     this.listener.updateScore(...DATA....); 
    } 
} 

class mainActivity extends Activity 
{ 
    @Override 
    public onCreate(...stuff...){ 
     ...on create stuff... 
     new gameGraphics(new DataListener{ 
      public void updateScore(String data){ 
       ...set the listview... 
      } 
     }); 
    } 
} 
相关问题