2012-03-13 61 views
2

解决方案没有找到它,我花了几个小时来应对这个挑战。 如何获得日期以查看当您按下“今天”按钮时的情况?如何在android中设置DatePickerDialog中的日期?

想要获得按下“今天”按钮时显示的日期。 而且,我们相信尝试将信息添加到指定日期的屏幕显示的过程。在外部类中定义

DatePickerDialog dpdialog = new DatePickerDialog(me, new OnDateSetListener() { 

     @Override 
     public void onDateSet(DatePicker view, int pickyear, int monthOfYear, 
       int dayOfMonth) { 

     } 
    }, year, month-1, day); 
    // Dialog(Positive Button) 
    dpdialog.setButton(
      DialogInterface.BUTTON_POSITIVE, 
      "set", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        // Positive Button 
        // How to get the date set 
        String day = dpdialog.getDayOfMonth(); 
        String month = dpdialog.getMonth() + 1; 
        String year = dpdialog.getYear(); 
       } 
      }  
      ); 

    // Dialog (Negative Button) 
    dpdialog.setButton(
      DialogInterface.BUTTON_NEGATIVE, 
      "cancel", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        // Negative Button 
       } 
      } 
      ); 

    // Dialog(Neutral Button) 
    dpdialog.setButton(
      DialogInterface.BUTTON_NEUTRAL, 
      "today", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        // Neutral Button 
       } 
      } 
      ); 

    dpdialog.show(); 
+5

没有人去打扰,如果你回答你的问题不要打扰你的代码格式。 – 2012-03-13 02:47:12

+0

对不起。 我应该有更多的问题和整理。 回来再次写我自己的,我试图提高可读性。 – user1265435 2012-03-13 03:19:13

回答

1

变量将是从内部类/联方法可见的,所以你可以做这样的:

private String day; 
private String month; 
private String year; 

DatePickerDialog dpdialog = new DatePickerDialog(me, new OnDateSetListener() { 

    @Override 
    public void onDateSet(DatePicker view, int pickyear, int monthOfYear, int dayOfMonth) { 
     // you have the picked year/month/day here. 
     // For example: 
     day = String.valueOf(dayOfMonth); 
     month = String.valueOf(monthOfYear); 
     year = String.valueOf(pickyear); 
    } 

}, year, month-1, day); 
+0

谢谢你的回答 我想要得到一个按下“set”按钮时显示的日期,但我会。 我不知道如何按下“set”按钮“onDateSet”时如何调用。 对不起基本问题。 – user1265435 2012-03-13 03:23:49

1
//decleration 
final static int DATE_DIALOG_ID=1; 
EditText dateedt; 
String date_selected=""; 
int currentDay,currentYear,currentMonth, 

//onCreate 
Calendar calendar=Calendar.getInstance(); 
     currentDay=calendar.get(calendar.DAY_OF_MONTH); 
     currentYear=calendar.get(calendar.YEAR); 
     currentMonth=calendar.get(calendar.MONTH)+1; 

dateedt=(EditText)findViewById(R.id.dateedt); 

dateedt.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       showDialog(DATE_DIALOG_ID); 
      } 
     }); 
//methods 
@Override 
     protected Dialog onCreateDialog(int id) { 
      // TODO Auto-generated method stub 

      switch(id) 
      { 
      case DATE_DIALOG_ID: 
       return new DatePickerDialog(this,mDateSetListener,currentYear,currentMonth-1,currentDay); 
} 
      return null; 
     } 

DatePickerDialog.OnDateSetListener mDateSetListener=new OnDateSetListener() { 

      public void onDateSet(DatePicker view, int year, int monthOfYear, 
        int dayOfMonth) { 
       // TODO Auto-generated method stub 

       if(monthOfYear < 10 && !String.valueOf(monthOfYear).contains("0")) 
       { 
        if(dayOfMonth < 10 && !String.valueOf(dayOfMonth).contains("0")) 
        { 
         date_selected = "0"+String.valueOf(monthOfYear+1)+" -0"+String.valueOf(dayOfMonth)+" -"+String.valueOf(year); 
         //selectedDateForDb = String.valueOf(year)+"-"+"0"+String.valueOf(monthOfYear+1)+"-0"+String.valueOf(dayOfMonth); 
        } 
        else 
        { 
         date_selected = "0"+String.valueOf(monthOfYear+1)+" -"+String.valueOf(dayOfMonth)+" -"+String.valueOf(year); 
         //selectedDateForDb = String.valueOf(year)+"-0"+String.valueOf(monthOfYear+1)+"-"+String.valueOf(dayOfMonth); 
        } 
       } 
       else if(dayOfMonth < 10 && !String.valueOf(dayOfMonth).contains("0")) 
       { 
        date_selected = String.valueOf(monthOfYear+1)+" -0"+String.valueOf(dayOfMonth)+" -"+String.valueOf(year); 
        //selectedDateForDb = String.valueOf(year)+"-"+String.valueOf(monthOfYear+1)+"-0"+String.valueOf(dayOfMonth); 
       } 
       else 
       { 
        date_selected = String.valueOf(monthOfYear+1)+" -"+String.valueOf(dayOfMonth)+" -"+String.valueOf(year); 
        //selectedDateForDb = String.valueOf(year)+"-"+String.valueOf(monthOfYear+1)+"-"+String.valueOf(dayOfMonth); 

       } 
       dateedt.setText(date_selected); 
      } 
     }; 
+0

感谢您快速回答 我的问题是多么错误。 我想在“对话框”而不是“显示”中查看您正在查看的日期。 你有没有想过得到这些信息,以及有多难。 – user1265435 2012-03-13 03:57:07

相关问题