我在一个片段上有多个微调器。当我更改一个值时,我需要更改另一个的适配器值。(例如,如果在第一个微调器中我在第二个选择users
,我需要获取first name
,last name
等。如果在首先我选择主题,我需要获得topic 1
,topic 2
等等。我有方法setSpinner()
以第一个值设置第二个微调器,这个工作。但问题是当我继续再次调用下一个片段并返回第一个片段setSpinner
并重置第二个微调器。
我的部分代码是:
SharedPreferences pref;
SharedPreferences.Editor edt;
Integer PTypeInt,PKindInt;
public View onCreateView(LayoutInflater inflater,ViewGroup container,
Bundle savedInstanceState) {
v = inflater.inflate(R.layout.finesvehicleinformation, container, false);
pref = getActivity().getPreferences(0); // I use shared preferences to know are value of spinner changed
edt = pref.edit();
PTypeInt = pref.getInt("PType_spinner", -1);
PType_spinner = (Spinner) v.findViewById(R.id.spPType);
// i wold not write set of adapter etc because this all work
PType_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
if (PTypeInt == -1) { //Here something is not right because PTypeInt is always -1
setSpinner(2, separated[0], "", "", v);
}
}
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
return v;
}
public void onViewCreated (View view, Bundle savedInstanceState){
PKindInt=-1; // set on -1 that I can select new value from spinner when I need
}
@Override
public void onPause() {
super.onPause(); // Always call the superclass method first
edt.putInt("PType_spinner", PType_spinner.getSelectedItemPosition()).commit();
edt.putInt("PKind_spinner", PKind_spinner.getSelectedItemPosition()).commit();
}
当我在第一帧使用时,一切正常,当我转到下一个,并且在第一次我获得PkindInt的价值时,但是当我在PKind_spinner.setOnItemSelectedListener
中检查它时总是-1
。
当我从微调器中手动选择值时,我需要调用setSpinner
,但是当我再次调用片段时则不需要。片段在FrameLayout中。我叫它
currentFragment = myfragment[fNo];//fNo is number of fragment
FragmentManager fm = getFragmentManager();
FragmentTransaction fragmentTransaction = fm.beginTransaction();
fragmentTransaction.replace(R.id.fragment_switch, currentFragment);
fragmentTransaction.commit();
请帮忙。
答案 0 :(得分:0)
我创建了带有两个微调器的测试项目,其中第二个微调器依赖于第一个微调器,以及用其他元件替换此片段的按钮,您可以在其中看到旋转器的选择。 Second Fragment有后退按钮 - 当它按下时,用户返回第一个片段并保留先前的选择。此外,当应用程序再次启动时,选择也恢复到之前的选择。
主要选择和状态保存/恢复如下:
pw.close();