我使用相同的微调器来处理我的应用中的所有活动。让我们说,旋转器中的项目是英语,芬兰语,波兰语,等等。当我在一个活动中选择芬兰语时,旋转器的下拉关闭并且可以在旋转器上看到芬兰语。但是当我进入下一个活动时,它不再显示芬兰语,而是在顶部显示英语(项目)。是否有任何方法可以使微调器上的项目出现在所有活动中。或者,除非没有更改,否则不应更改。 在BaseActivity中;
int currentLanguage = spinner.getSelectedItemPosition();
SharedMemory.getInstance().setCurrentPosition(currentLanguage);
Log.i("SET POSITION", Integer.toString(currentLanguage));
在其他活动中保存项目位置的状态;
int position = SharedMemory.getInstance().getCurrentPosition();
Base_Activity.spinner.setSelection(position);
Log.i("GET POSITION", Integer.toString(position));
我设法将所选语言设置为在SharedMemory中设置它是Singleton类。 但是我怎样才能在所有活动中获得相同的当前语言。当我改变活动时,我无法得到它。 注意:此微调器位于Base_Activity类的操作栏中,其中所有其他活动都扩展到此类。 谢谢。
答案 0 :(得分:1)
最后,我设法解决了我的问题。在我尝试在spinner.setOnItemSelectedListener()方法中做东西之前,这确实是错误的。 在我的BaseActivity中;
Configuration conf = getResources().getConfiguration();
//creating the position of the language in spinner from arraylist
int currentLanguage = Arrays.asList(language_codes).indexOf(
conf.locale.getLanguage());
spinner.setSelection(currentLanguage);
这使我可以在我更改活动时始终将所选的微调器项保持在顶部。希望这可以帮助别人。 :)
答案 1 :(得分:0)
这是因为其他活动中的微调器与第一个活动中的微调器不同。
您必须将微调器的当前选择作为参数传递给第二个活动,并将其他微调器选择设置为该位置。
在BaseActivity中:
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("pos", spinner.getSelectedItemPosition());
startActivity(intent);
在第二个活动中:
spinner.setSelection(getIntent().getIntExtra("pos", 0));
答案 2 :(得分:0)
单身类应该看起来像这样:
public class SharedMemory {
public static SharedMemory sharedMem = new SharedMemory();
private String valueSelected; // or position here
public SharedMemory getInstance() {
return sharedMem;
}
public String getCurrentLanguage() {
Log.i("tag","valueSelected: " + valueSelected);
return valueSelected;
}
public void setCurrentLanguage(String currLang) {
valueSelected = currLang;
Log.i("tag","valueSelected: " + valueSelected);
}
}
修改强>
onItemSelectedListener(...) {
if(ShareMemory.getInstance().getCurrentLanguage().equalsIgnoreCase("0")) {
// then set the value to 0
}else {
// set the value still but then set the gui also
}
}
//在onResume或onCreate方法中 写下以下内容:
spinner.setSelection(ShareMemory.getInstance().getCurrentLanguage());
使用Log打印singleTon类中的值,以及微调器的onItemSelected侦听器。