2011-04-14 128 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