【发布时间】:2011-05-09 22:16:39
【问题描述】:
在我的 android 应用程序中,我有一个 Button,它向布局中添加了一个新的动态 Spinner。所有创建的 Spinner 都使用相同的 Array。
到目前为止,我可以保存创建的 Spinner 的数量并在重新启动应用程序后重新创建它们。 但我真的很想将每个 Spinner 的 selectedPosition 保存在 sharedPreferences 中,这就是我陷入 ForceClose Desaster 的地方......
据我了解,每个 Spinner 在创建时都会获得一个 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);
}
这将创建 Spinner。
public void onClick(View v) {
addSpinner();
int ID = 1000+x;
spinner.setId(ID);
Toast.makeText(MatReporterActivity.this,"ID" + ID, 5)
.show();
x++;
}
设置 ID。
这就是我在 on Create 方法中所做的:
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 方法中存在逻辑问题,但我无法找到它,我也没有在网络上找到任何关于如何填充和保存动态创建的微调器的帮助。
所以也许有人有一个想法。 谢谢。
【问题讨论】:
-
强制关闭的堆栈跟踪?你使用 LogCat(如果没有,你应该)。
标签: java android dynamic spinner auto-populate