GridView
을 사용하여 간단한 달력을 만들었으며 세로보기에서 가로보기 (또는 뒤로)로 전환 할 때마다 상태가 유지되지 않습니다. 예를 들어, 나는 세로보기에서 1 월로 바뀌고 풍경에서는 12 월으로 돌아갑니다. 나는 그것을 해결하기 위해 노력하고 내 OnCreate()
이 코드를 추가 :세로에서 가로로 전환 할 때보기의 상태 저장
if(savedInstanceState != null && savedInstanceState.containsKey(CALENDAR)){
mCalendar = (Calendar) savedInstanceState.getSerializable(CALENDAR);
}else{
mCalendar = Calendar.getInstance();
}
그리고 클래스에이 방법을 추가 :
@Override
public void onSaveInstanceState(Bundle outState){
super.onSaveInstanceState(outState);
//Save the calendar instance in case the user changed it
outState.putSerializable(CALENDAR, mCalendar);
}
불행하게도 그것이 작동하지 않으며, 달은 여전히 전환 유지 전화 방향을 변경할 때 처음으로 누군가 나를 도울 수 있습니까?
는코드 :
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calendar);
mCalendar = Calendar.getInstance(Locale.getDefault());
month = mCalendar.get(Calendar.MONTH) + 1;
year = mCalendar.get(Calendar.YEAR);
previous = (Button) findViewById(R.id.b_prevMonth);
next = (Button) findViewById(R.id.b_nextMonth);
displayMonth = (TextView) findViewById(R.id.et_displayMonth);
gv_daysOfWeek = (GridView) findViewById(R.id.gv_daysOfWeek);
gv_calendar = (GridView) findViewById(R.id.gv_calendar);
previous.setOnClickListener(this);
next.setOnClickListener(this);
displayMonth.setText(DateFormat.format(monthDisplay, mCalendar.getTime()));
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.weekdays_grid, R.id.grid_item_label, WEEK_DAYS);
gv_daysOfWeek.setAdapter(adapter);
setGridCellAdapter(month, year);
if(savedInstanceState != null && savedInstanceState.containsKey(CALENDAR)){
mCalendar = (Calendar) savedInstanceState.getSerializable(CALENDAR);
}else{
mCalendar = Calendar.getInstance();
}
}
/**
* Method responsible for intialising the adapter
*/
private void setGridCellAdapter(int month, int year) {
cellAdapter = new GridCellAdapter(getApplicationContext(),R.id.day_gridcell, month, year);
mCalendar.set(year, month - 1 , mCalendar.get(Calendar.DAY_OF_MONTH));
displayMonth.setText(DateFormat.format(monthDisplay, mCalendar.getTime()));
cellAdapter.notifyDataSetChanged();
gv_calendar.setAdapter(cellAdapter);
}
더 많은 코드를 게시하십시오. 어떻게 mCalendar를 사용하고 있는지 잘 모릅니다 – dymmeh
조각입니까? 활동입니까? – Sam
활동입니다. –