如何清除TimePicker editText?
How to clear TimePicker editText?
在Activity B中,我有两个可点击的editText
(TI,TO),一个保存Button
。单击 EditText
时,将显示 TimePicker dialog
。将Button
用来return这两个值保存到ActivityA.
现在的问题是 EditText
将在 Activity 上显示从 TimePicker dialog
获得的最新值 甚至在 Activity 上没有选择任何值B 。
假设在 Activity B 中,我在 TI 中输入了 1:00
,在 TO 中输入了 2:00
。第二次,我在Activity B EditText
上没有输入任何内容,然后按按钮return到A,它仍然会显示1:00和2:00关于 Activity A.
Activity B
timeIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { //shows timePick
Fragment fragDialog = getSupportFragmentManager().findFragmentByTag("TimePicker");
if (fragDialog == null) { // Fragment not added
tp.setFlag(TimePick.FLAG_START_DATE);
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
tp.show(ft, "TimePicker");
} else {
// already active
}
}
});
timeOut.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Fragment fragDialog = getSupportFragmentManager().findFragmentByTag("TimePicker");
if(fragDialog == null)
{ // Fragment not added
tp.setFlag(TimePick.FLAG_END_DATE);
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
tp.show(ft, "TimePicker");
}
else
{
// already active
}
}
});
public static class TimePick extends android.support.v4.app.DialogFragment implements TimePickerDialog.OnTimeSetListener {
public static final int FLAG_START_DATE = 00;
public static final int FLAG_END_DATE = 01;
private int flag = 00;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
return new TimePickerDialog(getActivity(), this, hour, minute, DateFormat.is24HourFormat(getActivity()));
}
public void setFlag(int i) {
flag = i;
}
@Override
public void onTimeSet(TimePicker view, int hourofDay, int minute) {
if (flag == FLAG_START_DATE) {
T1.setText(Integer.toString(hourofDay) + ":" + Integer.toString(minute));
TimeIn = T1.getText().toString();
}
if (flag == FLAG_END_DATE) {
TO.setText(Integer.toString(hourofDay) + ":" + Integer.toString(minute));
TimeOut = TO.getText().toString();
}
}
save.setOnClickListener(new View.OnClickListener()
{ // return values to A activity
@Override
public void onClick(View v)
{
Intent returnIntent=new Intent();
returnIntent.putExtra("TimeIn", TimeIn);
returnIntent.putExtra("TimeOut",TimeOut);
setResult(Activity.RESULT_OK,returnIntent);
finish();
}
});
Activity一个
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) { // receive from Activity B and populate ListView A
if (resultCode == RESULT_OK) {
if (requestCode == PROJECT_REQUEST_CODE) {
ReceiveTimeIn = data.getStringExtra("TimeIn");
ReceiveTimeOut = data.getStringExtra("TimeOut");
Toast.makeText(getApplicationContext(),ReceiveTimeIn+ReceiveTimeOut,Toast.LENGTH_LONG).show();
}
Toast
第二次显示null
,结果显示1:00 2:00
已编辑 (Activity B)
save.setOnClickListener(new View.OnClickListener() { // return values to activity A
@Override
public void onClick(View v)
{
if (isEdited == false)
{
if(T1!=null||TO!=null) // if editText not clicked but has value pass from ListView A
{
// return T1 and TO value to listView Activity A
}
else { // if editText not clicked and no value passed, then only null
TimeIn = "";
TimeOut = "";
}
}
Intent returnIntent = new Intent();
Project = project.getSelectedItem().toString();
Description = description.getText().toString();
progress = seekBar.getProgress();
returnIntent.putExtra("Project", Project);
returnIntent.putExtra("Description", Description);
returnIntent.putExtra("progress", progress);
returnIntent.putExtra("TimeIn", TimeIn);
returnIntent.putExtra("TimeOut", TimeOut);
setResult(Activity.RESULT_OK, returnIntent);
finish();
}
});
两个timeIn and timeOut edittext
的findViewById
之后将它们设置为空如下:
timeIn.setText("");
timeOut.setText("");
还有你的另外两个变量:
TimeIn = "";
TimeOut = "";
在Activity B中,我有两个可点击的editText
(TI,TO),一个保存Button
。单击 EditText
时,将显示 TimePicker dialog
。将Button
用来return这两个值保存到ActivityA.
现在的问题是 EditText
将在 Activity 上显示从 TimePicker dialog
获得的最新值 甚至在 Activity 上没有选择任何值B 。
假设在 Activity B 中,我在 TI 中输入了 1:00
,在 TO 中输入了 2:00
。第二次,我在Activity B EditText
上没有输入任何内容,然后按按钮return到A,它仍然会显示1:00和2:00关于 Activity A.
Activity B
timeIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { //shows timePick
Fragment fragDialog = getSupportFragmentManager().findFragmentByTag("TimePicker");
if (fragDialog == null) { // Fragment not added
tp.setFlag(TimePick.FLAG_START_DATE);
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
tp.show(ft, "TimePicker");
} else {
// already active
}
}
});
timeOut.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Fragment fragDialog = getSupportFragmentManager().findFragmentByTag("TimePicker");
if(fragDialog == null)
{ // Fragment not added
tp.setFlag(TimePick.FLAG_END_DATE);
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
tp.show(ft, "TimePicker");
}
else
{
// already active
}
}
});
public static class TimePick extends android.support.v4.app.DialogFragment implements TimePickerDialog.OnTimeSetListener {
public static final int FLAG_START_DATE = 00;
public static final int FLAG_END_DATE = 01;
private int flag = 00;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
return new TimePickerDialog(getActivity(), this, hour, minute, DateFormat.is24HourFormat(getActivity()));
}
public void setFlag(int i) {
flag = i;
}
@Override
public void onTimeSet(TimePicker view, int hourofDay, int minute) {
if (flag == FLAG_START_DATE) {
T1.setText(Integer.toString(hourofDay) + ":" + Integer.toString(minute));
TimeIn = T1.getText().toString();
}
if (flag == FLAG_END_DATE) {
TO.setText(Integer.toString(hourofDay) + ":" + Integer.toString(minute));
TimeOut = TO.getText().toString();
}
}
save.setOnClickListener(new View.OnClickListener()
{ // return values to A activity
@Override
public void onClick(View v)
{
Intent returnIntent=new Intent();
returnIntent.putExtra("TimeIn", TimeIn);
returnIntent.putExtra("TimeOut",TimeOut);
setResult(Activity.RESULT_OK,returnIntent);
finish();
}
});
Activity一个
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) { // receive from Activity B and populate ListView A
if (resultCode == RESULT_OK) {
if (requestCode == PROJECT_REQUEST_CODE) {
ReceiveTimeIn = data.getStringExtra("TimeIn");
ReceiveTimeOut = data.getStringExtra("TimeOut");
Toast.makeText(getApplicationContext(),ReceiveTimeIn+ReceiveTimeOut,Toast.LENGTH_LONG).show();
}
Toast
第二次显示null
,结果显示1:00 2:00
已编辑 (Activity B)
save.setOnClickListener(new View.OnClickListener() { // return values to activity A
@Override
public void onClick(View v)
{
if (isEdited == false)
{
if(T1!=null||TO!=null) // if editText not clicked but has value pass from ListView A
{
// return T1 and TO value to listView Activity A
}
else { // if editText not clicked and no value passed, then only null
TimeIn = "";
TimeOut = "";
}
}
Intent returnIntent = new Intent();
Project = project.getSelectedItem().toString();
Description = description.getText().toString();
progress = seekBar.getProgress();
returnIntent.putExtra("Project", Project);
returnIntent.putExtra("Description", Description);
returnIntent.putExtra("progress", progress);
returnIntent.putExtra("TimeIn", TimeIn);
returnIntent.putExtra("TimeOut", TimeOut);
setResult(Activity.RESULT_OK, returnIntent);
finish();
}
});
两个timeIn and timeOut edittext
的findViewById
之后将它们设置为空如下:
timeIn.setText("");
timeOut.setText("");
还有你的另外两个变量:
TimeIn = "";
TimeOut = "";