나는 여전히 내 발을 안드로이드에 젖게하고 있습니다. 나는 기본 "학기"를 표현하기 위해 계절과 해를 저장하려고 노력하고 있지만 변경 사항이 적용되지 않습니다. 나는 기록하고 나의 settings.edit().putInt()
계산서가 나가 예상하고 있던 가치에서 두는 것을 시도하고 있다는 것을 확인했다.SharedPreferences가 업데이트되지 않습니다.
그러나 화면을 다시로드하면 기본 설정 값이 제공된 기본 값을 사용하고 있습니다. 왜 내 가치관을 잡지 못하는 걸까요? 감사.
공용 클래스 SetSemester이 ActionBarActivity를 확장 {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_set_semester);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new SetSemesterFragment()).commit();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.set_semester, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* A placeholder fragment containing a simple view.
*/
public static class SetSemesterFragment extends Fragment {
View rootView;
SharedPreferences settings;
int YEAR_DEFAULT_VALUE = AddCourse.thisYear - AddCourse.baseYear;
int SEASON_DEFAULT_VALUE = 0;
String year_key;
String season_key;
static int baseYear=2005;
static int thisYear = Calendar.getInstance().get(Calendar.YEAR);
public SetSemesterFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_set_semester,
container, false);
year_key = getResources().getString(R.string.year_pref_str);
season_key = getResources().getString(R.string.season_pref_str);
Button b = (Button) rootView.findViewById(R.id.apply_semester_btn);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
applySemester(v);
}
});
settings = this.getActivity().getSharedPreferences(getResources().getString(R.string.main_prefs_file), 0);
int curYear = settings.getInt(year_key, YEAR_DEFAULT_VALUE);
int curSeason = settings.getInt(season_key, SEASON_DEFAULT_VALUE);
System.out.println("stored values..." + curYear + " " + curSeason);
//Year Spinner
ArrayList<String> years = new ArrayList<String>();
for (int i = baseYear; i <= 2030; i++)
{
years.add(Integer.toString(i));
}
ArrayAdapter<String> adapter_year = new ArrayAdapter<String>(this.getActivity(),
android.R.layout.simple_spinner_item, years);
Spinner spinYear = (Spinner)rootView.findViewById(R.id.year_spinner);
adapter_year.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinYear.setAdapter(adapter_year);
spinYear.setSelection(curYear);
//Semester Spinner
Spinner spinner = (Spinner) rootView.findViewById(R.id.semester_spinner);
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter_spinner = ArrayAdapter.createFromResource(this.getActivity(),
R.array.semester_spinner, android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears
adapter_spinner.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
spinner.setAdapter(adapter_spinner);
spinner.setSelection(curSeason);
return rootView;
}
public void applySemester(View v){
Spinner semesterSpin = (Spinner)rootView.findViewById(R.id.semester_spinner);
Spinner yearSpin = (Spinner)rootView.findViewById(R.id.year_spinner);
//ToStrings
int year = yearSpin.getSelectedItemPosition();
int season = semesterSpin.getSelectedItemPosition();
System.out.println(year + " " + season);
settings.edit().putInt(year_key, year);
settings.edit().putInt(season_key, season);
settings.edit().apply();
}
}
}
대단히 감사합니다! 이것은 트릭을했다. 그리고 지금 나는 뭔가를 배웠습니다. – NSouth