2012-04-11 28 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... 
      } 
     }); 
    } 
} 
相關問題