私のAndroidアプリケーションには、新しい動的スピナーをレイアウトに追加するボタンがあります。作成されたスピナーはすべて同じアレイを使用しています。
これまで機能していたことですが、作成したスピナーの数を保存して、アプリケーションを再起動した後に再作成できます。しかし、私は本当に各スピナーのselectedPositionをsharedPreferencesに保存したいと思っています。これは、ForceCloseDesasterで立ち往生している場所です...
私の理解では、すべてのスピナーは作成時にIDを取得するため、このIDで囲まれた位置を設定に保存できます。
だからこれは私がしたことです:
public void addSpinner(){
LinearLayout AddLayout = (LinearLayout)findViewById(R.id.linearAddScroll);
spinner = new Spinner(this);
ArrayAdapter<?> adapt = ArrayAdapter.createFromResource(this,
R.array.Filter, android.R.layout.simple_spinner_item);
adapt.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapt);
AddLayout.addView(spinner);
}
これによりスピナーが作成されます。
public void onClick(View v) {
addSpinner();
int ID = 1000+x;
spinner.setId(ID);
Toast.makeText(MatReporterActivity.this,"ID" + ID, 5)
.show();
x++;
}
IDを設定します。
これは、私がonCreateメソッドで行うことです。
x = settings.getInt("xsave", 1);
for(y = 1; y < x; y++){
addSpinner();
int ID = 1000+y;
Spinner s = (Spinner) findViewById(ID);
String ys= Integer.toString(ID);
Toast.makeText(MatReporterActivity.this,"ID" +ys, 5)
.show();
int yf = settings.getInt(ys, 1);
s.setSelection(yf);
}
そしてこのonStop():
SharedPreferences settings = PreferenceManager
.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("xsave", x);
for(y = 1; y < x; y++){
int ID = 1000+y;
Spinner s2= (Spinner) findViewById(ID);
int possS = s2.getSelectedItemPosition();
Toast.makeText(MatReporterActivity.this, "IDStop" + ID, 5)
.show();
String ys= Integer.toString(ID);
editor.putInt(ys, possS);
}
editor.commit();
}
onCreateメソッドに論理的な問題があると思いますが、それを見つけることができません。また、動的に作成されたスピナーを設定して保存する方法について、Webでヘルプが見つかりませんでした。
だから多分誰かがアイデアを持っています。ありがとう。