Как сохранить даты CalendarView с SharedPreferences?
Я делаю приложение, чтобы установить детали для событий в Calendarview. Приложение использует 3 вида деятельности; Главное, создать событие и показать событие.
Как только дата выбрана в календарном просмотре, setEventClick используется, чтобы открыть Создать действие, используя дату в качестве ключа, если для ключа уже нет данных. Если есть данные, они покажут активность.
Однако после того, как я установил событие на дату и использовал setEventClick, чтобы открыть его, ранее размещенные сведения больше не отображаются, и он снова открывает операцию создания.
Из прочтения SO я знаю, что быть очень конкретным и ясным с вопросами очень важно, это мой первый вопрос, поэтому, пожалуйста, дайте мне знать, как я могу улучшить свои вопросы для будущего использования.
Основная деятельность
public class MainActivity extends Activity {
private SharedPreferences savedEvents;
CalendarView cal;
public String dateSelected;
public String description;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
savedEvents = getSharedPreferences("myPrefs", MODE_PRIVATE);
cal = (CalendarView) findViewById(R.id.calendarView1);
cal.setOnDateChangeListener(new OnDateChangeListener() {
@Override
public void onSelectedDayChange(CalendarView view, int year, int month,
int dayOfMonth) {
month = month+1;
Toast toast = Toast.makeText(getBaseContext(),
"Selected Date is\n\n"+month+" / "+dayOfMonth+" / "+year,
Toast.LENGTH_SHORT);
toast.setGravity(Gravity.TOP|Gravity.CENTER_VERTICAL, 0, 0); //changes position Toast appears
toast.show();
dateSelected = "" + month + "/" + dayOfMonth + "/" + year;
}//end onSelectedDayChange method
});//end OnDateChangeListener
}//end OnCreate
public void setEventClick(View v)
{
if (savedEvents.getString(dateSelected, "") != "") //Launches Show activity if event already exists
{
description = savedEvents.getString(dateSelected, "");
savedEvents = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = savedEvents.edit();
editor.putString(dateSelected, description);
Intent show = new Intent(this, ShowActivity.class);
this.startActivity(show);
}//end if
else //if date has no event, launches activity to create one
{
SharedPreferences.Editor editor = savedEvents.edit();
editor.putString(dateSelected, "");
editor.putString("thisDate", dateSelected);
Intent create = new Intent(this, CreateActivity.class);
this.startActivity(create);
}//end else
}//end setEventClick
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}//end onCreateOptionsMenu
}//end Main Activity
CreateActivity
public class CreateActivity extends Activity {
public String DateSelected;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_create);
}//end onCreate method
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.create, menu);
return true;
}//end onCreateOptionsMenu method
public void SaveClick(View v)
{
EditText editevent = (EditText)findViewById(R.id.editText1);
SharedPreferences Prefs2 = getSharedPreferences("myPrefs", MODE_PRIVATE);
Prefs2 = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
DateSelected=Prefs2.getString("thisDate", "");
SharedPreferences.Editor editor = Prefs2.edit();
editor.putString(DateSelected, editevent.toString());
finish();
}//end SaveClick method
}//end CreateActivity class
ShowActivity
public class ShowActivity extends Activity {
public String DateSelected;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show);
TextView txtView2 = (TextView)findViewById(R.id.txtView);
SharedPreferences Prefs2 = getSharedPreferences("myPrefs", MODE_PRIVATE);
Prefs2 = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
DateSelected=Prefs2.getString("thisDate", "");
txtView2.setText(Prefs2.getString(DateSelected, ""));
}//end onCreate method
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.show, menu);
return true;
}//end onCreateOptionsMenu method
}//end ShowActivity
1 ответ
Удалите эту строку из вашего кода:
Prefs2 = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
Вы также пропустили, чтобы сохранить материалы в sharedPreferences
:
editor.putString(DateSelected, editevent.toString()).commit();