2011-08-19 148 views
0

我有這個簡單的活動,它假設一旦點擊按鈕就改變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 

}} 
+0

是textview班次的名稱,是完整佈局的名稱也轉移? – Pyrodante

+0

如果您的意思是通過名稱的textview的id比它是「setdate」。 – Yosi199

回答

1

我猜你的佈局與ID 轉變缺少TextView。在logcat輸出中查找錯誤:是否爲NullPointerException?

+0

我太笨了,看不到它!!!!!! – Yosi199

3

更改此:

setDate.setText(i); 

這樣:

setDate.setText("" + i); 

當你調用setText(int) int值當作你沒有一個字符串資源ID,所以你需要調用setText(CharSequence)在你的設置2122 TextView

+0

要添加更多顏色,'setDate.setText(int)'(第一個調用)正嘗試從ID = i的* resource *中加載文本。 – dmon

+0

@dmon - 我實際上補充說。謝謝! – MByD

+0

嘗試更改爲字符串,CharSequence並且仍然被意外停止。這是否與TextView是Final?有關? – Yosi199

0

在Android中一定要注意,很多功能有一個默認的int參數,而不是對象作爲這就是我們如何引用對象是非常重要的。 所以你必須添加(i +「」)到你的setView()方法。你不能修改最終的對象。

+0

我知道你不能修改一個Final對象,但是如果我從Textview中刪除了Final,我不能從另一個方法中訪問setDate.setText方法 – Yosi199

+0

問題是你已經在方法中定義了setDate。除此之外,您應該將其定義爲實例成員,然後在oncreacte()中初始化它並在onclick()中對其進行修改。 – MozenRath

0

變化

setDate.setText(i); 

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

如果整數關口進入的setText它將使用重載函數接受資源ID作爲PARAM。你想要做的是傳遞字符串。我強烈建議使用Integer.toString()而不是骯髒的技巧,比如i +「」。