0

それぞれのモードに対して、レイアウトとレイアウトランドに 2 つの異なる xml ファイルがあります。向きが変わってもedittextsに値を戻したいのでandroid:configChanges="orientation|keyboardHidden"、マニフェストファイルで使用しています。これにより、onCreate() メソッドの実行が再度非アクティブ化され、現在のアクティビティは破棄されません。

アプリに 2 つのフレームがあります。最初のフレームには 25 個の編集テキストが含まれ、2 番目のフレームには 10 個のボタンが含まれます。したがって、ポートレート モードではこれらのフレームが次々に表示され、ランドスケープ モードではフレームが隣り合って表示されます。モードに応じてこのビューを取得するにはsetContentView(R.layout.main);onConfigurationChanged()メソッドに記述しました。しかし、ここでの問題は、すでに editTexts に入力されている値を に保存できることですonConfigurationChanged()。しかし、それぞれのレイアウトに設定した後、値を編集テキストに戻すことができません。それぞれのレイアウトを取得していますが、空の編集テキストがあるためです。次のコード スニペットは、私の問題の概要を示しています。

public void onCreate()
{
setContentView(R.layout.main);
gridView = (GridView) findViewById(R.id.gridView1);
gridView.setAdapter(new EditTextAdapter(this)); //This creates 25 edittexts in the gridview which is in first frame.

} 

public void getEditTexts()//getting the edittext objects here in the activity class
{
editText1=gridView.getChildAt(k);
...........
...........
}

public void onConfigurationChanged()
{
String s1=editText1.getText().toString();//Here I am using technique to store the values.

setContentView(R.layout.main);
gridView.setAdapter(new EditTextAdapter(this));
getEditTexts();
editText1.setText(s1);    //here is my problem. I am unable to set values back in the editText.

}

どこが間違っているのですか?以前のモードで値が設定されている場合、現在のモードで 25 の edittexts でこのように値を戻す方法。提案してください。ここでは、モードが変更されても、古い edittext オブジェクト自体に値が設定されていると思います。新しい edittext オブジェクトに値を設定するには? 現在のレイアウトに存在しない場合、値が古い edittext オブジェクトに設定されるのはなぜですか? または、この問題には別の理由がありますか?

4

1 に答える 1

1

お客様の要件に対応する代替アプリケーションを作成しました。私はまだグリッド ビューを使用していませんが、XML なしで必要な数のビューを追加できます。コードは、デバイス構成とビュー サイズをチェックし、その数の行と列をレイアウトに追加します。これは、要件に合わせて変更できる基本的な例です。
ここにコードへのリンクがあります

ご不明な点がございましたら、お気軽にご相談ください。

于 2012-09-13T11:12:42.870 に答える