25

質問は非常に簡単です。しかし、GUI 要素への参照を正確にどこで行うのか知りたいですか? 定義するのに最適な場所は次のとおりです。

final EditText edit =  (EditText) findViewById(R.id.text_xyz);
 edit.getText.tostring();

デフォルトの oncreate() 内で試してみると、null 値が得られます。したがって、ベスト プラクティスとして、main.xml で既に定義されているこれらの gui 要素を参照するための別のクラスをお勧めしますか。ここから、gettext や settext など、これらの要素のさまざまなメソッドを呼び出すことができます。

4

7 に答える 7

27

私が信じるあなたの問題に対する最も迅速な解決策は、あなたのgetText. に追加()するだけedit.getText().toString()で解決するはずです

于 2012-12-05T01:24:43.443 に答える
19

まあ、それはあなたのニーズに依存します。非常に頻繁に、ウィジェットへの参照を (クラス フィールドとして) アクティビティに保持し、それらをonCreateメソッドに設定します。それは良い考えだと思いますおそらく null の理由は、メソッドを設定する前
に呼び出そうとしていることです-確認してください。findViewById()contentView()onCreate()

于 2009-12-29T12:53:52.267 に答える
13

setContentView()メソッド呼び出しの前に実行している場合、値は null になります。

これはnullになります:

super.onCreate(savedInstanceState);

Button btn = (Button)findViewById(R.id.btnAddContacts);
String text = (String) btn.getText();

setContentView(R.layout.main_contacts);

これはうまくいきますが:

super.onCreate(savedInstanceState);
setContentView(R.layout.main_contacts);

Button btn = (Button)findViewById(R.id.btnAddContacts);
String text = (String) btn.getText();
于 2009-12-29T13:02:25.353 に答える
3
String fname = ((EditText)findViewById(R.id.txtFirstName)).getText().toString();
String lname = ((EditText)findViewById(R.id.txtLastName)).getText().toString();
((EditText)findViewById(R.id.txtFullName)).setText(fname + " "+lname);
于 2012-11-04T20:51:10.143 に答える