我在1st EditText中输入了DatePicker的日期,但是当我从1st EditText中的日期选择器中选择日期,并且当我在2nd Edit文本中插入任何int值时,它将获得当前日期,这将在3rd Edit中进行更改。文本。因此,自5个小时以来,我一直在尝试如何解决此问题,但仍无法找到适当的解决方案。请有人帮我。谢谢欣赏。

例如:


我输入日期为= 1st Edittext 2014年9月15日
我在第二个编辑文本中输入5位数字
日期应在2014年9月20日的第3次编辑文本中显示。


这是我的活动代码。

// Get current date by calender
 final Calendar c = Calendar.getInstance();
 year  = c.get(Calendar.YEAR);
 month = c.get(Calendar.MONTH);
 day   = c.get(Calendar.DAY_OF_MONTH);


etReplacementDate.setText(new StringBuilder().append(month + 1)
         .append("-").append(day).append("-").append(year)
         .append(" "));


 etReplacementDate.setOnClickListener(new OnClickListener() {

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


 String fixedDate = etReplacementDate.getText().toString().trim();

 SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss aa");
 convertedDate = new Date();
try
{
    convertedDate = dateFormat.parse(fixedDate);
}
catch (ParseException e)
{
    // TODO Auto-generated catch block
    e.printStackTrace();
}

System.out.println("Date convertedDate  = " + convertedDate);
String intervalDays = etInterval_Days.getText().toString().trim();

  if(intervalDays.trim().length()>0){

      try
      {
          intConvertDays =Integer.parseInt(intervalDays);
      }
      catch(NumberFormatException ne){
         System.out.println("could not parse :: " +ne);
       }

   }

   System.out.println("strConvertDays in afterTextChanged: " + intConvertDays);


    etInterval_Days.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable editable)
        {
            // TODO Auto-generated method stub

            String intervalDays = etInterval_Days.getText().toString().trim();

              if(intervalDays.trim().length()>0){

                  try
                  {
                      intConvertDays =Integer.parseInt(intervalDays);
                  }
                  catch(NumberFormatException ne){
                     System.out.println("could not parse :: " +ne);
                   }

               }

            cal2.setTime(convertedDate);
            cal2.add(Calendar.MONTH, intConvertDays);
            Date resultDate = cal2.getTime();
            String strResultDate = new SimpleDateFormat("yyyy-MM-dd").format(resultDate);
            System.out.println("After one days strResultDate : " + strResultDate);

            SimpleDateFormat simpleDate =  new SimpleDateFormat("dd/MM/yyyy");
            String strConverted_Date = simpleDate.format(resultDate);
            etNextReplanishmentDate.setText(strConverted_Date);

            cal2.add(Calendar.DATE, -2);
            Date beforDate = cal2.getTime();
            String beforDate_String = new SimpleDateFormat("yyyy-MM-dd").format(beforDate);
            System.out.println("beforDate_String: " + beforDate_String);

        }
    });


}


@Override
protected Dialog onCreateDialog(int id)
{
    switch (id)
    {
    case DATE_OF_REPLACEMENT:return new DatePickerDialog(this, pickerListenerReplacement, year, month, day);
    }
    return null;
}

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

// when dialog box is closed, below method will be called.
@Override
public void onDateSet(DatePicker view, int selectedYear,
        int selectedMonth, int selectedDay) {

    year  = selectedYear;
    month = selectedMonth;
    day   = selectedDay;

    // Show selected date
    etReplacementDate.setText(new StringBuilder().append(month + 1)
            .append("-").append(day).append("-").append(year)
            .append(" "));



    }
};

最佳答案

试试这样的事情-

String finalDate = day + " " + month + " " + year;

SimpleDateFormat sdf = new SimpleDateFormat("dd MMMM yyyy");

Calendar c = Calendar.getInstance();

try {
    c.setTime(sdf.parse(finalDate));
} catch (ParseException e) {
    e.printStackTrace();
}

int addDays = Integer.parseInt(editText2.getText().toString());

c.add(Calendar.DATE, addDays);  // number of days to add
SimpleDateFormat sdf1 = new SimpleDateFormat("dd MMMM yyyy");
String output = sdf1.format(c.getTime());


要自动更改editText3中的日期,您可以使用TextWatcher-

TextWatcher tw = new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            //get values in editText1 and 2 and add them

int val1 = Integer.parseInt(editText1.getText().toString());
int val2 = Integer.parseInt(editText2.getText().toString());

//add the above code here

String finalDate = day + " " + month + " " + year;

SimpleDateFormat sdf = new SimpleDateFormat("dd MMMM yyyy");

Calendar c = Calendar.getInstance();

try {
    c.setTime(sdf.parse(finalDate));
} catch (ParseException e) {
    e.printStackTrace();
}

String addDays = Integer.parseInt(editText2.getText().toString());

c.add(Calendar.DATE, addDays);  // number of days to add
SimpleDateFormat sdf1 = new SimpleDateFormat("dd MMMM yyyy");
String output = sdf1.format(c.getTime());

    editText3.setText(output + "");


        }
    };

10-07 19:25
查看更多