2011-06-27 11 views
1

2番目のアクティビティから更新する必要があるTextViewを持つアクティビティがあります。 テキストビューデータを2番目のアクティビティに渡すことはできますが、2番目のアクティビティ内でTextView を更新しようとするとクラッシュします。私のコード:(TextViewには、私のXMLで定義されている)他のアクティビティからTextViewを更新できません

第一の活動:

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

を貼り付けてください.3行目がクラッシュします:textView.setText(text); – huskyd97

+0

'R.id.yourTextViewId'を変更して、アクティビティレイアウト内のテキストビューのIDを修正する必要があります。 – inazaruk

+1

R.id.yourTextViewIdを、私の1回目のアクティビティレイアウトに一致するように変更しました。私の2番目のアクティビティではこれを使用していますが、2番目のアクティビティのレイアウトが全く違うので、どのように認識していますか? thx – huskyd97

3

TextViewとして文字列を取得しようとしています(最初のアクティビティからインテントに文字列を設定しています)。

0

ここでこの行:

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

意図はなく、TextViewに沿って文字列を取り付けています。

2番目のアクティビティ内で新しいTextViewをlayout.xmlで宣言するか、プログラムでレイアウト内に配置することによって、新しいTextViewを展開する必要があります。私にとっては、この問題の一部を解決し

+0

String text =(String)bundle.get( "homescore_value"); TextView textView =(TextView)findViewById(R.id.score_home); // textView.setText(text); - >この行を使用するとクラッシュします – huskyd97

+0

2番目のアクティビティで1番目のアクティビティで定義されたTextViewをどのように膨張させるのですか?私はそれがputExtraを使う理由だと思った。 2番目のアクティビティはそのTextViewが何であるかを認識します。私はここで何かを逃していると思う。あなたの助けのためにthx。 – huskyd97

+0

'TextView'は実際のテキストではなくテキストのプレースホルダーと考えてください。 意図的に、プリミティブなデータ型でも、 'Parcelable'を実装していても、実際にtextViewを送ることはできません。 だから、基本的に 'textView.getText()'を呼び出すと、その中にあった文字列を取得し、それをインテントに送信します。だから 'TextView'はあなたの文字列を入れるバケット/プレースホルダーです。 2番目のレイアウトがどこに置かれるかを知るために、別の' TextView'を設定する必要があります。 ホープはあなたを助けてくれるでしょう:) – manno23

0

何かがこのようnullに受信文字列変数を設定しました:

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

これで私の問題は、私が唯一のいくつかのTextViewsと上の背景色を設定しようとしていますさ最初に1つはこの時点で設定されています。

関連する問題