2017-04-06 47 views
-3

我已經構建了一個應用程序,在該應用程序中,當我們點擊TextView時,得到的天數差異爲TextView。我通過在谷歌上搜索完成了這項工作。但是現在我希望結果應該自動顯示在TextView中。我已給出TextView的編號,其中我想自動顯示結果,編號爲no_of_days如何刪除OnClickListener方法並直接在TextView中顯示結果

我的代碼是:

public class Leave extends AppCompatActivity { 

TextView date; 
private DatePickerDialog datePickerDialog; 
//TextView date2; 
//TextView setDay; 
private DatePickerDialog datePickerDialog2; 
TextView no_of_days; 
String date1 = "", date2 = ""; 
private TextView strdate2; 
private TextView strdate; 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_leave); 
    strdate = (TextView) findViewById(R.id.date); 
    strdate2 = (TextView) findViewById(R.id.date2); 
    //setDay = (TextView) findViewById(R.id.setDay); 
    no_of_days = (TextView) findViewById(R.id.no_of_days); 
    final RadioButton radio_full = (RadioButton) findViewById(R.id.radio_full); 
    final RadioButton radio_Half = (RadioButton) findViewById(R.id.radio_Half); 
    RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioleave); 
    radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(RadioGroup radioGroup, int i) { 
      int buttonId = radioGroup.getCheckedRadioButtonId(); 
      switch (buttonId) { 
       case R.id.radio_full: 
        Toast.makeText(getApplicationContext(), "You have selected Full Day Leave", Toast.LENGTH_SHORT).show(); 
        break; 
       case R.id.radio_Half: 
        Toast.makeText(getApplicationContext(), "You have selected Half Day Leave", Toast.LENGTH_SHORT).show(); 
        break; 
      } 
     } 
    }); 

    // initially hide the radio buttons 
    radio_full.setVisibility(View.GONE); 
    radio_Half.setVisibility(View.GONE); 

    // initiate the date picker and a button 
    strdate= (TextView) findViewById(R.id.date); 
    // perform click event on edit text 
    strdate.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // calender class's instance and get current date , month and year from calender 
      final Calendar c = Calendar.getInstance(); 
      int mYear = c.get(Calendar.YEAR); // current year 
      int mMonth = c.get(Calendar.MONTH); // current month 
      int mDay = c.get(Calendar.DAY_OF_MONTH); // current day 
      // date picker dialog 
      datePickerDialog = new DatePickerDialog(Leave.this, 
        new DatePickerDialog.OnDateSetListener() { 

         @Override 
         public void onDateSet(DatePicker view, int year, 
               int monthOfYear, int dayOfMonth) { 
          // set day of month , month and year value in the edit text 
          // assign the value to date1 
          date1 = dayOfMonth + "/" 
            + (monthOfYear + 1) + "/" + year; 

          strdate.setText(dayOfMonth + "/" 
            + (monthOfYear + 1) + "/" + year); 

          // check if date2 has been set and compare it with date1 
          if (!TextUtils.isEmpty(date2)) { 
           // get difference 
           getDifferenceDays(date, date2); 

           if(date1.equals(date2)) { 
            // pop up radio button 
            radio_full.setVisibility(View.VISIBLE); 
            radio_Half.setVisibility(View.VISIBLE); 
           } else { 
            // hide radio buttons 
            radio_full.setVisibility(View.GONE); 
            radio_Half.setVisibility(View.GONE); 
           } 
          } 

         } 
        }, mYear, mMonth, mDay); 
      datePickerDialog.show(); 
     } 
    }); 

    // initiate the date picker and a button 
    strdate2 = (TextView) findViewById(R.id.date2); 
    // perform click event on edit text 
    strdate2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // calender class's instance and get current date , month and year from calender 
      final Calendar c = Calendar.getInstance(); 
      int mYear = c.get(Calendar.YEAR); // current year 
      int mMonth = c.get(Calendar.MONTH); // current month 
      int mDay = c.get(Calendar.DAY_OF_MONTH); // current day 
      // date picker dialog 
      datePickerDialog2 = new DatePickerDialog(Leave.this, 
        new DatePickerDialog.OnDateSetListener() { 

         @Override 
         public void onDateSet(DatePicker view, int year, 
               int monthOfYear, int dayOfMonth) { 
          // set day of month , month and year value in the edit text 

          // assign the value to date2 
          date2 = dayOfMonth + "/" 
            + (monthOfYear + 1) + "/" + year; 

          strdate2.setText(dayOfMonth + "/" 
            + (monthOfYear + 1) + "/" + year); 
          // check if date2 has been set and compare it with date1 
          if (!TextUtils.isEmpty(date1)) { 
           // get difference 
           getDifferenceDays(date, date2); 

           if(date1.equals(date2)) { 
            // pop up radio button 
            radio_full.setVisibility(View.VISIBLE); 
            radio_Half.setVisibility(View.VISIBLE); 
           } else { 
            // hide radio buttons 
            radio_full.setVisibility(View.GONE); 
            radio_Half.setVisibility(View.GONE); 
           } 
          } 

         } 
        }, mYear, mMonth, mDay); 
      datePickerDialog2.show(); 

     } 
    }); 

    no_of_days.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      SimpleDateFormat format = new SimpleDateFormat("dd/mm/yyyy"); 
      String date01 = strdate.getText().toString(); 
      String date02 = strdate2.getText().toString(); 
      try { 
       Date d = format.parse(date01); 
       Date d1 = format.parse(date02); 
       getDifferenceDays(d, d1); 
      } catch (ParseException e) { 
       e.printStackTrace(); 
      } 


     } 
    }); 


} 


private void getDifferenceDays(TextView d, String d1) { 

} 

public void getDifferenceDays(Date d1, Date d2) { 
    int daysdiff = 0; 
    long diff = d2.getTime() - d1.getTime(); 
    long diffDays = diff/(24 * 60 * 60 * 1000) + 1; 
    daysdiff = (int) diffDays; 
    no_of_days.setText(Integer.toString(daysdiff)); 
    System.out.println("day count=>" + daysdiff); 
} 

}

+0

任何人plz幫我出 – Natalya

+3

問題不明確 – Krish

+1

如果你的邏輯工作正常只是從oncreate調用它?它會在你的應用程序啓動時啓動 – Phil3992

回答

0

頸部可以在日期選取器功能如下代碼

SimpleDateFormat format = new SimpleDateFormat("dd/mm/yyyy"); 

      try { 
       Date d = format.parse(date1); 
       Date d1 = format.parse(date2); 
       getDifferenceDays(d, d1); 
      } catch (ParseException e) { 
       e.printStackTrace(); 
      } 

代替調用此方法getDifferenceDays(日期,DATE2);