如何动态更改Textview?

时间:2011-08-19 19:09:29

标签: java android textview

我有这个简单的活动,假设在单击按钮后更改TextView的文本。相反,我让应用程序部队无意中关闭了。以下是此textview更改的代码:

package android.GUI;

import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.text.format.*;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CheckedTextView;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;
import android.*;
import java.text.DateFormat;
import java.util.Date;

public class Shifts extends Activity implements OnClickListener{

Utility UT2 = new Utility();

int i = 2122;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.shifts);

final TextView setDate = (TextView)this.findViewById(R.id.shifts);

Button setText = (Button)findViewById(R.id.setdate);
setText.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub

    setDate.setText(i);
}
})  ;

}

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

 }}

5 个答案:

答案 0 :(得分:3)

改变这个:

setDate.setText(i);

到此:

setDate.setText("" + i);

当您致电setText(int)时,int被视为您没有的字符串资源ID,因此您需要致电setText(CharSequence)TextView

答案 1 :(得分:2)

您正在调用TextView.setText(int),其中int是资源ID,您可能没有定义它。

你可能想要调用TextView.setText(CharSequence),就像这样:

setDate.setText(i + "");

答案 2 :(得分:1)

我猜你的布局缺少TextView,ID shift 。在logcat输出中查找错误:是否为NullPointerException?

答案 3 :(得分:0)

在Android中,非常重要的是要注意许多函数都有一个默认的int参数而不是对象,因为我们引用对象的方式。 所以你必须在你的setView()方法中添加(i +“”)。你不能修改最终的对象。

答案 4 :(得分:0)

更改

setDate.setText(i);

setDate.setText(Integer.toString(i));

如果将整数传递给setText,它将使用重载函数,该函数接受资源ID作为参数。你想要做的是传递字符串。我强烈建议使用Integer.toString()而不是像i +“”那样的脏技巧。