gpt4 book ai didi

java - Android - 日历数据未使用 putExtra() 发送

转载 作者:行者123 更新时间:2023-11-29 20:12:46 25 4
gpt4 key购买 nike

我拥有的是一个日历小部件,按下时会打开,用户可以从日历中选择日期。我有变量来保存在 DateSetup 类中输入的日期,并且我按照使用 putExtra() 的代码将数据从一个类发送到另一个类,但这些值没有显示。

应用程序的过程是选择日期后,用户将能够使用有效的时间选择器小部件来选择时间。

选择日期和时间后,这些值将发送到 MySQL 数据库,其中应显示日期/时间值。仅显示选定的时间,而不显示选定日历中的日期。

日期设置类

public class DateSetup extends MainActivity implements View.OnClickListener
{

//UI References
private EditText fromDateEtxt;
private EditText toDateEtxt;

// Dates Strings setup
String startDate;
String endDate;


DatePickerDialog fromDatePickerDialog;
DatePickerDialog toDatePickerDialog;

private SimpleDateFormat dateFormatter;

private DataDBAdapter2 Database;

Button btnHistory;
Button btnTime;
Button btnFuture;
Button btnManual;


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


fromDateEtxt = (EditText) findViewById(R.id.etxt_fromdate);
fromDateEtxt.setInputType(InputType.TYPE_NULL);
fromDateEtxt.requestFocus();

toDateEtxt = (EditText) findViewById(R.id.etxt_todate);
toDateEtxt.setInputType(InputType.TYPE_NULL);
toDateEtxt.requestFocus();


btnTime = (Button)findViewById(R.id.btnSetDates);
btnFuture = (Button)findViewById(R.id.btnFutureSetups);
btnManual = (Button)findViewById(R.id.btnManualControl);


fromDateEtxt.setOnClickListener(this);
toDateEtxt.setOnClickListener(this);



// Open the database
Database = new DataDBAdapter2(this);
Database.open();

// Set the date format to English (Australia)
dateFormatter = new SimpleDateFormat("dd-MM-yyyy", Locale.ENGLISH);

btnHistory = (Button)findViewById(R.id.btnHistoryView);
btnHistory.setOnClickListener(this);


//-------------------------------------------
// Start Date (From date)
//-------------------------------------------
Calendar newCalendar = Calendar.getInstance();
fromDatePickerDialog = new DatePickerDialog(this, new OnDateSetListener()
{
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
{
Calendar newDate = Calendar.getInstance();
newDate.set(year, monthOfYear, dayOfMonth);
fromDateEtxt.setText(dateFormatter.format(newDate.getTime()));
//startDate = fromDateEtxt.getText().toString();

}

},newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));


//-------------------------------------------
// End Date (End date)
//-------------------------------------------
toDatePickerDialog = new DatePickerDialog(this, new OnDateSetListener()
{

public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
{
Calendar newDate = Calendar.getInstance();
newDate.set(year, monthOfYear, dayOfMonth);
toDateEtxt.setText(dateFormatter.format(newDate.getTime()));
//endDate = toDateEtxt.getText().toString();


}

},newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));


// Set dates and continue to set times
btnTime.setOnClickListener(new View.OnClickListener()//OnClickListener()
{
@Override
public void onClick(View view)
{
// Start next activity
Intent i = new Intent(DateSetup.this, TimeSetup.class);

// Send data start data and End Date
//i.putExtra("START", startDate);
//i.putExtra("END", endDate);
i.putExtra("START", fromDateEtxt.getText().toString());
i.putExtra("END", toDateEtxt.getText().toString());

//i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);

DateSetup.this.startActivity(i);
}
});


// History view
btnHistory.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v2)
{
Intent myIntent2 = new Intent(DateSetup.this, HistoryView.class);
myIntent2.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
DateSetup.this.startActivity(myIntent2);
}
});


// Future Settings View
btnFuture.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
Intent myIntent3 = new Intent(DateSetup.this, CurrentView.class);
myIntent3.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
DateSetup.this.startActivity(myIntent3);

}
});


// Manual Control
btnManual.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
Intent myIntent4 = new Intent(DateSetup.this, IrrigationControl.class);
myIntent4.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
DateSetup.this.startActivity(myIntent4);

}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
//getMenuInflater().inflate(R.menu.date_setup, menu);
//getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}

@Override
public void onClick(View view)
{
if(view == fromDateEtxt)
{
fromDatePickerDialog.show();
}
else if(view == toDateEtxt)
{
toDatePickerDialog.show();
}
}

}

TimeSetup2 类

public class TimeSetup2 extends TimeSetup
{
Button btnBck;
Button btnSetDatesandTime;

String minutedisplay2;
String hourdisplay2;

private DataDBAdapter2 Database;

private TimePicker timePicker2;

protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.time_setup2);

btnBck = (Button) findViewById(R.id.btnBack);
btnSetDatesandTime = (Button) findViewById(R.id.btnSet);
timePicker2 = (TimePicker)findViewById(R.id.timePicker2);

Database = new DataDBAdapter2(this);
Database.open();

// Back to previous activity
// http://stackoverflow.com/questions/4038479/android-go-back-to-previous-activity
btnBck.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
Intent myIntent = new Intent(TimeSetup2.this, TimeSetup.class);
TimeSetup2.this.startActivity(myIntent);
}
});



// Set time and dates
btnSetDatesandTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
// Generate random number for ID
Random r = new Random();
int i2 = r.nextInt(100-1) + 100;

// Convert from integer to string
String random2 = Integer.toString(i2);


//------------------------------------------------------
// Data from other classes to be sent to the database
//------------------------------------------------------
Intent intent = getIntent();

// Start Date and End date data
String StartD = intent.getStringExtra("START");
String EndD = intent.getStringExtra("END");

// Time Picker 1 Data (Working)
String StartTime1 = intent.getStringExtra("TIMEHOUR1");
String EndTime1 = intent.getStringExtra("TIMEMIN1");

// Time Picker 2 Data
//String StartTime2 = intent.getStringExtra("TIMEHOUR2");
//String EndTime2 = intent.getStringExtra("TIMEMIN2");
hourdisplay2 = timePicker2.getCurrentHour().toString();
minutedisplay2 = timePicker2.getCurrentMinute().toString();

// Send data to the Database
Database.insertData2(random2, StartD, EndD, StartTime1 + ":" + EndTime1, hourdisplay2 + ":" + minutedisplay2);

// Send data to the arduino board

// Show Message that the data has been sent
Toast.makeText(getApplicationContext(), "Irrigation Setups have been sent", Toast.LENGTH_LONG).show();
}
});
}

}

我已经坚持尝试解决这个问题好几天了。这可能是我错过的非常简单的事情,但我无法弄清楚。

最佳答案

唯一对操作系统友好的数据类型是原始类型(int、long、float、boolean 等),因此这意味着 putExtra() 只允许您存储原始类型。这就是您无法发送日历对象的原因。

尝试将您的经期字符串发送到下一个 Activity 。

关于java - Android - 日历数据未使用 putExtra() 发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39977709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com