我想通过日期和时间我得到使用日期选择对话框和时间选择对话框下一个活动在Android工作室



这是Datepicker和Timepicker工作的Java代码。这两个都工作正常,所以我想把选择的日期和时间发送给下一个活动(Doctor_Time_Picking_data_page.java)

Doctor_Time_Picking_page.java
public class Doctor_Time_Picking_page extends AppCompatActivity {
public static final String TEXT_TO_SEND ="com.example.dogapp.TEXT_TO_SEND";
private DatePickerDialog datePickerDialog;
private Button dateButton;
private Button timeButton;
private Bundle savedInstanceState;
private Button saveButton;
private String DATE;


//On Create method-------------------------------------------------------------------------------------------------------------------------
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_doctor_time_picking_page);
initDatePicker();
dateButton = findViewById(R.id.datePickerButton);
timeButton = findViewById(R.id.timeButton);
saveButton =  findViewById(R.id.date_time_save_button);


Intent intent = new Intent(getApplicationContext(),Doctor_Time_Picking_data_page.class);

saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(intent);
}
});


}

//-----------------------------------------------------------------------------------------------------------------------------------
private Bundle initDatePicker()
{

DatePickerDialog.OnDateSetListener dateSetListener = new DatePickerDialog.OnDateSetListener()
{
@Override
public void onDateSet(DatePicker datePicker, int year, int month, int day)
{
month = month + 1;
String date = makeDateString(day, month, year);
dateButton.setText(date);



}
};

Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);

int style = AlertDialog.THEME_HOLO_LIGHT;

datePickerDialog = new DatePickerDialog(this, style, dateSetListener, year, month, day);
datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);

return null;
}

private String makeDateString(int day, int month, int year)
{
return getMonthFormat(month) + " " + day + " " + year;
}

private String getMonthFormat(int month)
{
if(month == 1)
return "JAN";
if(month == 2)
return "FEB";
if(month == 3)
return "MAR";
if(month == 4)
return "APR";
if(month == 5)
return "MAY";
if(month == 6)
return "JUN";
if(month == 7)
return "JUL";
if(month == 8)
return "AUG";
if(month == 9)
return "SEP";
if(month == 10)
return "OCT";
if(month == 11)
return "NOV";
if(month == 12)
return "DEC";
//default should never happen
return "JAN";
}

public void openDatePicker(View view)
{
datePickerDialog.setTitle("Select Date");
datePickerDialog.show();
}




//Time Button


int hour, minute;


public void popTimePicker(View view)
{
TimePickerDialog.OnTimeSetListener onTimeSetListener = new TimePickerDialog.OnTimeSetListener()
{

@Override
public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute)
{
hour = selectedHour;
minute = selectedMinute;
timeButton.setText(String.format(Locale.getDefault(), "%02d:%02d",hour, minute));
}
};
TimePickerDialog timePickerDialog = new TimePickerDialog(this, /*style,*/ onTimeSetListener, hour, minute, true);

timePickerDialog.setTitle("Select Time");
timePickerDialog.show();
}


}


这是我想要显示日期和时间从我以前的活动选择的页面(Doctor_Time_Picking_page.java)

Doctor_Time_Picking_data_page.java:公共类Doctor_Time_Picking_data_page扩展AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_doctor_time_picking_data_page);

Button Button1a = findViewById(R.id.doc_page4_btn1);
Button Button2a = findViewById(R.id.doc_page4_btn2);
Button Button3a = findViewById(R.id.doc_page4_btn3);
Dialog nDialog = new Dialog(this);


Button1a.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Doctor_Time_Picking_data_page.this,Doctor_Appoinment_payment.class);
startActivity(intent);
}
});

Button2a.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Doctor_Time_Picking_data_page.this,Doctor_Time_Picking_page.class);
startActivity(intent);
}
});

Button3a.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
nDialog.setContentView(R.layout.activity_doctor_delete_popup_msg);
nDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
Intent intent = new Intent(Doctor_Time_Picking_data_page.this,Doctor_delete_popup_msg.class);
startActivity(intent);
}
});

}
}

在我的项目中有三个按钮,那些是选择时间,选择日期和保存按钮,当我选择每个按钮时,Datepicker和Timepicker对话框出现,当我选择日期或时间,这些数据出现在按钮上,我想把这些数据传递给我的下一个活动,这是Doctor_Time_Picking_data_page.java,并显示给用户。我现在想要的是从这些Pickers中选择的数据传递给下一个活动

你需要传递一个额外的意图给其他活动来获得你的结果。按照以下步骤操作:

  1. 在类中创建一个文件名为date:
private String date = "JAN 1 2022"; // I have given a sample date
  1. 您需要像这样将日期存储在DateSetListener中:
DatePickerDialog.OnDateSetListener dateSetListener = new DatePickerDialog.OnDateSetListener()
{
@Override
public void onDateSet(DatePicker datePicker, int year, int month, int day)
{
month = month + 1;
date = makeDateString(day, month, year);
dateButton.setText(date);



}
};
  1. 你需要在点击保存按钮时通过该日期:
saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
intent.putExtra("date", date);
startActivity(intent);
}
});
  1. 然后你需要像这样得到其他活动的日期:
public class Doctor_Time_Picking_data_page extends AppCompatActivity {
...

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_doctor_time_picking_data_page);

String date = getIntent().getStringExtra("date", "");

// 👆 that is the date from the previous activity

...
});

...
}

最新更新