如何从另一个函数更改Textview文本?

时间:2013-11-29 15:04:08

标签: android textview

这是我的第一个问题,所以我希望说清楚。

我有一个带有一些数字文本的textView,旁边有一个按钮,只有一个点击监听器,我想要的是当你点击按钮时,TextView的数值(> = 0)会减少一个。 这是我的代码的一部分:

    TextView Counter = new TextView(this);      
    if (intSeries != 0)
        Counter.setText(Integer.toString(intSeries));
    else
        Counter.setText("0");
    Counter.setId(4);
    tablaContador.addView(Counter,Tr);

    Button Done = new Button(this);
    Done.setText("-1");
    if (intSeries != 0)
        Done.setVisibility(View.VISIBLE);
    else
        Done.setVisibility(View.GONE);
    Done.setId(6);
    Done.setOnClickListener(this);

这是onClick功能(部分功能):

@Override
public void onClick(final View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
      case 6:{
            TextView text = (TextView)findViewById(4);
            int series = Integer.parseInt(text.getText().toString());
            series--;
            text.setText(series);
            if (series==0){
                Button boton = (Button)findViewById(6);
                boton.setVisibility(View.GONE);
            }
       }
    }

}

错误是当我尝试在onClick函数中创建setText时,我希望它可以修复或者可能会收到其他想法。 非常感谢你。

4 个答案:

答案 0 :(得分:2)

我会避免对ID进行所有这些硬编码,而是使用资源。

致电

text.setText(series)

正在传递一个int。唯一有效的setText(int resId)重载需要与int值相关联的资源,即字符串资源。

将您的系列值转换为字符串。

类似的东西:

text.setText(Integer.toString(series));

答案 1 :(得分:0)

您应该将系列设置为整数。并根据需要增加/减少它。如果要更改按钮的文本,请将int转换为String

而不是:

text.setText(series);

使用:

text.setText(String.valueOf(series));

答案 2 :(得分:0)

java中的变量名不能以大写字母开头。这是为类名保留的。

Counter -> counter

Done -> done

答案 3 :(得分:0)

我试过这个并且有效:

//Create onClickListener
OnClickListener pickChoice = new OnClickListener()
{
    public void onClick(View v)
    {
        TextView txt = (TextView) findViewById(4);
        int number = Integer.valueOf(txt.getText().toString());
        txt.setText(String.valueOf(number -1));
    }
};


//Create layout
LinearLayout lnLayout = new LinearLayout(this);
lnLayout.setOrientation(LinearLayout.VERTICAL);

TextView txt = new TextView(this);
txt.setId(4);
txt.setText("0");
lnLayout.addView(txt);

Button Done = new Button(this);
Done.setText("-1");
Done.setId(6);
Done.setOnClickListener(pickChoice);
lnLayout.addView(Done);

setContentView(lnLayout);

你在哪里创建按钮?一个活动?你将onClickListener传递给按钮的部分没有意义,也许按钮是一个错误的监听器,每次按下按钮都会出错?

代码应该易于理解,如果有什么需要我解释请问:)