0

そのビューに切り替える前に、テキストビューのテキストを更新して表示するビューを準備しようとしています。

テキストビュー変数をパブリックとして宣言し、OnCreate で初期化しました

 Info = (TextView) findViewById(R.id.BackDialogText);

そして、テキストを変更するときが来ると、nullpointerException が発生します。

Info.setText(TheString);
setContentView(R.layout.mydialog_layout);

setText なしでアプリを実行しましたが、問題なく動作し、定義済みのテキストでビューが表示されます。ビューのテキストを更新するために欠けているトリックはありますか?

4

3 に答える 3

1

ラインの位置を入れ替えるだけです。

以下は作業スニペットです。

setContentView(R.layout.mydialog_layout);
Info.setText(TheString);
于 2012-11-26T06:52:36.537 に答える
1

基本的にビューを設定する前に

 setContentView(R.layout.mydialog_layout);

あなたのアクティビティでは、コード内のビュー内の要素を使用できません。したがって、コードに次のようなものが必要です

setContentView(R.layout.mydialog_layout);
 Info = (TextView) findViewById(R.id.BackDialogText); // you cannot initialize your view before  setcontentview
 Info.setText(TheString);  //this line must be always called after setContentView
于 2012-11-26T06:58:53.757 に答える
0

findViewById() は、呼び出し元のビューでビューを見つけます。

編集: 申し訳ありませんが、Mac がクラッシュし、それ以上拡張できませんでした。基本的に、Android では、フォアグラウンドのアクティビティのみが任意の時点で生きています。そのため、別のアクティビティから 1 つのビューを変更することもお勧めできません。変更したいテキストだけの場合は、いくつかのオプションがあります。最も簡単な方法は、アクティビティの 1 つに public static 変数を設定し、その変数で setText を呼び出すことです。

たとえば、次のようになります。

public class Activity1 extends Activity {
    private static theString = "";

    public static void setString(String s) { 
         theString = s;
     }

    public void onCreate(Bundle b) {
        super.onCreate(b);
      setContentView(R.layout.mydialog_layout);
    Info = (TextView) findViewById(R.id.BackDialogText);



      Info.setText(TheString);
    }
}

次に、Activity2 で次のように呼び出すことができます。

Activity1.setString("New String");
于 2012-11-26T06:43:47.867 に答える