2011-04-14 130 views
5

我試圖做一個基本的計數器。點擊按鈕後更新TextView?

這個想法是,用戶按下按鈕,應用程序顯示按鈕被按下多少次。

我的問題是,我不確定如何更新文本視圖。我的理解是,它的XML部分檢索字符串,這些字符串在運行時被設置。那麼我應該如何「更新」「最終」的東西呢?

我的理解是,當按下按鈕時,我將num遞增1.然後,它獲得提示字符串(Clicks:%d)並將其顯示在屏幕上。然而,每當我運行這個,它只是崩潰。

public class HelloAndroid extends Activity{ 
/** Called when the activity is first created. */ 

int num = 0; 
TextView tView; 
Button clickhere; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    tView = (TextView) findViewById(R.id.textView1); 
    clickhere = (Button) findViewById(R.id.button1); 

    clickhere.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      num++; 
      String display = String.format(getString(R.string.prompt), num); 
      tView.setText(display); 
      setContentView(tView); 

     } 
    }); 

} 
} 

任何幫助,將不勝感激。

+0

只是一個快速添加tpo以前的答案:您不需要調用setContentView(tView);在onClick()事件中。 – Aleadam 2011-04-14 01:58:01

+0

非常感謝Aleadam!那正是我需要它來運作的! – RTL 2011-04-14 02:02:43

+0

很高興你能工作,雖然主要工作是由Brian和Corey完成的。爲他們+1。我也看到這是你的第一個問題,所以對你格式化的問題非常讚賞,這個問題表明了在提出要求之前付出的努力。 +1也爲你:) – Aleadam 2011-04-14 02:06:58

回答

4

您在設置時,它被點擊(點擊按鈕時不)TextView的,我猜測這是不是你的意思做。當點擊按鈕時,我更新了下面的代碼以設置TextView。

public class HelloAndroid extends Activity{ 
/** Called when the activity is first created. */ 

int num = 0; 
TextView tView; 
Button clickhere; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    tView = (TextView) findViewById(R.id.textView1); 
    clickhere = (Button) findViewById(R.id.button1); 

    clickhere.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 

      String display = String.format(getString(R.string.prompt, Integer.toString(++num))); 
      tView.setText(display); 
     } 
    }); 

    //you don't need an event handler on the TextView (given the description of the problem) 

} 
} 
+0

,它應該會顯示更改。謝謝,我在您回覆之前意識到這一點,並且我修復了該部分,但每次嘗試點擊時我仍然崩潰。 – RTL 2011-04-14 01:48:53

2
clickhere.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     num++; 
     tView.setText(Integer.toString(num)); 
    } 
}); 

這將設置你的TextView等於NUM

+0

感謝您的幫助,但我發現它改變了textView。但是,如何讓它顯示更改? – RTL 2011-04-14 01:49:53

+0

只要您致電setText – corey 2011-04-14 02:36:16