2011-06-27 130 views
1

我有一個需要從第二個活動更新的TextView活動。 我可以將文本視圖數據傳遞給第二個活動,但是當我嘗試在第二個活動內更新該TextView 時,它會崩潰。我的代碼:無法從其他活動更新TextView

1日活動(其中TextView的是我的XML定義):

Intent intent = new Intent(1stactivity.this, 2ndactivity.class); 
intent.putExtra("homescore_value", ((TextView)findViewById(R.id.score_home)).getText()); 
startActivity(intent); 

// code snippet 

然後在我的第二個活動:

Bundle bundle = getIntent().getExtras(); 
hometext = bundle.getString("homescore_value"); // this works and displays the correct String from 1st activity, 

但是當我嘗試拉進來,因爲它崩潰a TextView

// other code snipped 
int homescore = 0; 
String Home_nickname = "HOME "; 

TextView homestext = (TextView) bundle.get("homescore_value"); 
hometext.setText(Home_nickname +": "+homescore ); 

請大家幫忙。

+1

請粘貼LogCat異常 – Sarmad

回答

1

您試圖將String轉換爲TextView。該崩潰的代碼是等價的:

String text = bundle.get("homescore_value"); //this is ok 
TextView textView = (TextView)text; //this is bad 

你應該這樣做,而不是:

String text = bundle.get("homescore_value"); 
TextView textView = (TextView)findViewById(R.id.yourTextViewId); 
textView.setText(text); 
+0

第三行導致崩潰:textView.setText(text); – huskyd97

+0

您需要更改'R.id.yourTextViewId'來更正活動佈局中文本視圖的ID。 – inazaruk

+1

我已更改R.id.yourTextViewId以匹配我在第一個活動佈局中所擁有的內容。但我在我的第二個活動中使用它,它如何識別它,因爲第二個活動的佈局完全不同? thx – huskyd97

3

您試圖獲取一個字符串作爲TextView(您正在設置一個字符串的意圖從第一個活動)。

0

這條線的位置:

intent.putExtra("homescore_value", ((TextView)findViewById(R.id.score_home)).getText()); 

沿着連接字符串的意圖,而不是一個TextView 。

您必須在第二個活動中爲新的TextView充氣,方法是在layout.xml中聲明它,或者通過編程將其放置在佈局中。

+0

String text =(String)bundle.get(「homescore_value」); TextView textView =(TextView)findViewById(R.id.score_home); // textView.setText(text); - >當我使用這一行時崩潰 – huskyd97

+0

如何膨脹在第二個活動的第一個活動中定義的TextView?我認爲這是使用putExtra的原因。以便第二個活動可以識別TextView是什麼?我想我在這裏失去了一些東西。 thx爲你的幫助。 – huskyd97

+0

把'TextView'想象成文本的佔位符,而不是實際的文本。 隨着意圖你會注意到你不能實際發送textView,因爲它不是一個基本的數據類型或實現'Parcelable'。 所以基本上當你調用'textView.getText()'你得到它中的字符串,併發送它的意圖。因此,'TextView'只是一個用於放置字符串的存儲桶/佔位符。 您需要設置另一個「TextView」,以便第二個佈局知道放置它的位置。 希望可以幫助你:) – manno23

0

東西解決了這個問題,我的部分是接收字符串變量設置爲null這樣的:

public String param1new = null; 
public String param2new= null; 

我對這個問題我想在幾個TextViews,只有設置背景顏色第一個是在這個時候設置。