数字/文字列をR.String.xxに保存するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/8888601

  •  29-10-2019
  •  | 
  •  

質問

このコードを使用すると、私のプログラムはちょうど強制的に近づきます(エラー)

***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 まだキャストすることはできません StringView.

また、これについては...

textView X = setText(R.String.nfoname);

それはそうでなければなりません...

TextView x = (TextView) findViewById(<some id>);
x.setText(getString(R.string.nfoname));
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top