告诉我退出应用程序后如何保留日期选择器自定义设置



我想创建一个简单的d日应用程序。

我拥有的代码会在您退出并重新启动应用程序时重置您在日期选择器中设置的日期

我希望约会选择器保留用户设置。

因此,随着用户设置的维护,d 日计数器将在一天后更新和计数。

请查看代码并提出建议

package your.pack;
import java.util.Calendar;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
public class DatecalActivity extends Activity {
/** Called when the activity is first created. */

private TextView ddayText;
private TextView todayText;
private TextView resultText;
private Button dateButton;

private int tYear;        
private int tMonth;
private int tDay;

private int dYear=1;      
private int dMonth=1;
private int dDay=1;


private long d;
private long t;
private long r;

private int resultNumber=0;

static final int DATE_DIALOG_ID=0;



@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

ddayText=(TextView)findViewById(R.id.dday);
todayText=(TextView)findViewById(R.id.today);
resultText=(TextView)findViewById(R.id.result);
dateButton=(Button)findViewById(R.id.dateButton);

dateButton.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
// TODO Auto-generated method stub
showDialog(0);//----------------
}
});



Calendar calendar =Calendar.getInstance();             
tYear = calendar.get(Calendar.YEAR);
tMonth = calendar.get(Calendar.MONTH);
tDay = calendar.get(Calendar.DAY_OF_MONTH);

Calendar dCalendar =Calendar.getInstance();
dCalendar.set(dYear,dMonth, dDay);

t=calendar.getTimeInMillis();               
d=dCalendar.getTimeInMillis();             
r=(d-t)/(24*60*60*1000);               

resultNumber=(int)r+1;
updateDisplay();        

}//OnCreate end

private void updateDisplay(){

todayText.setText(String.format("%d년 %d월 %d일",tYear, tMonth+1,tDay));
ddayText.setText(String.format("%d년 %d월 %d일",dYear, dMonth+1,dDay));

if(resultNumber>=0){
resultText.setText(String.format("D-%d", resultNumber));
}
else{
int absR=Math.abs(resultNumber);
resultText.setText(String.format("D+%d", absR));
}
}

private DatePickerDialog.OnDateSetListener dDateSetListener=new DatePickerDialog.OnDateSetListener() {

@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
dYear=year;
dMonth=monthOfYear;
dDay=dayOfMonth;
final Calendar dCalendar =Calendar.getInstance();
dCalendar.set(dYear,dMonth, dDay);

d=dCalendar.getTimeInMillis();
r=(d-t)/(24*60*60*1000);

resultNumber=(int)r;
updateDisplay();
}
};


@Override
protected Dialog onCreateDialog(int id){
if(id==DATE_DIALOG_ID){
return new DatePickerDialog(this,dDateSetListener,tYear,tMonth,tDay);
}
return null;
}


}//DatecalActivity end

在共享首选项中设置日期选择器选择日期,并在应用再次启动时将其取回。

DatePicker dp; 
Date d = new Date(dp.getYear(), dp.getMonth(), dp.getDay());
SharedPreferences Prefs = PreferenceManager.getDefaultSharedPreferences(Ctxt);
Prefs.edit().putLong("datePickerValue", d.getTime()).commit();

这就是你要找的: https://developer.android.com/training/basics/data-storage/shared-preferences.html

在此链接中,您将学习如何在共享首选项中保存字符串,使用 XML 文件即使您杀死应用程序:D也会保留您的数据

您可能希望以某种方式设置选择共享首选项的日期,然后在应用程序启动时将其从首选项中提取(如果它们存在(。如何存储该日期数据取决于您以及您希望如何存储。

最新更新