2012-09-25 3 views
0

optionsMenu를 재정의 한 활동이 있습니다. 그것은 이전 로타를 얻으려면 3 버튼 하나, 다음 로타를 얻으려면 하나, 옵션 메뉴에 세번째 버튼은 사용자가 자신이 원하는 로타의 날짜를 선택할 수있는 데이터 피커를 표시해야합니다. 옵션 메뉴의 "오늘"버튼에 DatePicker 리스너를 부착하려면 어떻게해야합니까?Android에서 DatePicker 수신기를 옵션 메뉴 버튼에 연결

public void setCurrentDateOnView() { 

     dpResult = (DatePicker) findViewById(R.id.datepicker1); 

     final Calendar c = Calendar.getInstance(); 
     year = c.get(Calendar.YEAR); 
     month = c.get(Calendar.MONTH); 
     day = c.get(Calendar.DAY_OF_MONTH); 

     // set current date into datepicker 
     // dpResult.init(year, month, day, null); 

    } 


    public boolean onCreateOptionsMenu(Menu menu) { 
      MenuInflater inflater = getMenuInflater(); 
      inflater.inflate(R.menu.menurotadetails, menu); 
      return true; 
     } 

     public boolean onOptionsItemSelected(MenuItem item) { 
      switch (item.getItemId()) { 
      case R.id.previous: 
       DateTime now2 = nfcscannerapplication.getDate(); 
       Log.e(TAG, "now2 = " + now2); 
       DateTime dateTimePlusOne2 = now2.minusDays(1); 
       Log.e(TAG, "now2 after -1 = " + dateTimePlusOne2); 
       nfcscannerapplication.setDate(dateTimePlusOne2); 
       DateTimeFormatter fmt2 = DateTimeFormat.forPattern("d-MMM-Y"); 
       String nextDay2 = fmt2.print(dateTimePlusOne2); 

       Intent i2 = new Intent(this, NfcscannerActivity.class); 
       i2.putExtra("nextRota", nextDay2); 
       i2.setAction("NEXT_ROTA"); 
       startActivity(i2); 
       return true; 

      case R.id.next: 

       DateTime now = nfcscannerapplication.getDate(); 
       Log.e(TAG, "now = " + now); 
       DateTime dateTimePlusOne = now.plusDays(1); 
       Log.e(TAG, "now after +1 = " + dateTimePlusOne); 
       nfcscannerapplication.setDate(dateTimePlusOne); 
       DateTimeFormatter fmt = DateTimeFormat.forPattern("d-MMM-Y"); 
       String nextDay = fmt.print(dateTimePlusOne); 

       Intent i = new Intent(this, NfcscannerActivity.class); 
       i.putExtra("nextRota", nextDay); 
       i.setAction("NEXT_ROTA"); 
       startActivity(i); 
       return true; 

      case R.id.today: 
       setCurrentDateOnView(); 
       return true; 

      default: 

       return super.onOptionsItemSelected(item); 
      } 
     } 


     public void addListenerOnButton() { 



      ??????.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 

        showDialog(DATE_DIALOG_ID); 

       } 

      }); 

     } 



     @Override 
     protected Dialog onCreateDialog(int id) { 
      switch (id) { 
      case DATE_DIALOG_ID: 
       // set date picker as current date 
       return new DatePickerDialog(this, datePickerListener, year, month, 
         day); 
      } 
      return null; 
     } 

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

      // when dialog box is closed, below method will be called. 
      public void onDateSet(DatePicker view, int selectedYear, 
        int selectedMonth, int selectedDay) { 
       year = selectedYear; 
       month = selectedMonth; 
       day = selectedDay; 



       // set selected date into datepicker also 
       dpResult.init(year, month, day, null); 

      } 
     }; 

. [업데이트] 똑바로 생각하지 않았습니다 미안 해요, 난 그냥 다음

case R.id.today: 
      setCurrentDateOnView(); 
      showDialog(DATE_DIALOG_ID); 
      return true; 

답변

0
case R.id.today: 
      setCurrentDateOnView(); 
      showDialog(DATE_DIALOG_ID); 
      return true; 
0

이 당신에게 작동이

public void setCurrentDateOnView() { 
       // your code 
       showDialog(DATE_DIALOG_ID); 

     }); 

희망을 시도했다.

+0

어쨌든 나는 게시물을 업데이트했습니다. – turtleboy