数字/文字列をR.String.xxに保存するにはどうすればよいですか?
質問
このコードを使用すると、私のプログラムはちょうど強制的に近づきます(エラー)
***public View x = findViewById(R.string.nfoname);***
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.information);
//edittext
***final EditText infoname=(EditText)findViewById(R.id.infoname);***
//clear,confirm
Button clear = (Button)findViewById(R.id.buttonclear);
Button confirm = (Button)findViewById(R.id.buttonconfirm);
//clear button
clear.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
infoname.setText("");
}
});
//confirm button
confirm.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
***x=(View) infoname.getText();***
}
});
}
とのもの * エラーの原因です
プログラム関数:ユーザーが確認されている場合、彼の名前はR.String.nfonameに設定され、TextView x = settex(R.String.nfoname)を介して別のレイアウトで使用されます。
解決
テキストをR.Stringに保存できるかどうかはわかりません。これは、コンパイラが作成する生成されたクラスです。 APKでパッケージ化されます。リソースを翻訳の手段と考え、画面にテキストを提示します。
あなたがやりたいことは、ユーザー入力を共有の表示またはデータベースに保存することだと思います。
見る:共有予約 Androidドキュメントでは、使用法の例。
他のヒント
少なくとも、可変のinfonameスコーピングの場合、アプリケーションがエラーを投げかける可能性が最も高いです。 infonameは、oncreate()関数のローカル変数であり、クラスのインスタンス変数ではないため、匿名クラスの一部であるため、onclick()メソッドではアクセスできません。
私が疑問に思うもう一つのことは、なぜあなたがinfonameを決勝としてマークしたのかということです。 OnCreate()が終了すると範囲外になりますので、変更が変更された場合、メソッドが実行されている間にのみ存在するため、誰が変更されたかがわかります。
これらの値はすべて読み取り専用のものに似た定数になるため、R.String.xxxに値を設定することはできません。編集テキストの値を別のレイアウトに使用する場合は、クラス変数を使用するか、 intent.putextra()
ソースコードに来ると、これがわかります
public View x = findViewById(R.string.nfoname);
R.Stringによってどのようにビューを見つけることができますか?これはr.idでなければなりません。
final Edittext infoname =(edittext)findViewById(r.id.infoname);なぜこの編集が最終的でなければならないのですか?
***x=(View) infoname.getText();***
使用するだけです infoname.getText().toString()
Edittextの現在のテキストの文字列値が取得されます。あなたは簡単に何かをすることができます。
public View x = findViewById(R.string.nfoname);
あなたが見つけようとしているだけでなく、これはうまくいきません View
を使って R.string
リソースID、あなたは以前にそれをやっています setContenView(...)
あなたに呼ばれます onCreate(...)
方法。有効なものを使用したとしても View
次のようなリソースID R.id.infoname
それから x
そうなるでしょう null
コンテンツビューはまだ膨らんでいないためです。
final EditText infoname=(EditText)findViewById(R.id.infoname);
の無意味な使用とは別に final
これは問題を引き起こすべきではありません R.id.infoname
実際にはのリソースIDです EditText
.
x=(View) infoname.getText();
そうするだけではありません x
なれ null
しかし、電話 getText()
で EditText
andを返します Editable
これはそうではありません View
キャストすることもできません View
. 。あなたが使用したとしても getText().toString()
テキストをから取得する正しい方法はこれが EditText
まだキャストすることはできません String
に View
.
また、これについては...
textView X = setText(R.String.nfoname);
それはそうでなければなりません...
TextView x = (TextView) findViewById(<some id>);
x.setText(getString(R.string.nfoname));