2013-06-03 53 views
1

我有兩個ImageButtons。一個負責設置開始日期,另一個負責設置結束日期。當每個人被按下時,他們顯示一個DatePickerDialog。 onCreateDialog方法在另一個類中。下面是類:如何從Java中的其他類使用onDateSet?

DatePickerFragment.Java

package com.ThatOneNoob.smarthaul; 

import java.util.Calendar; 

import android.app.DatePickerDialog; 
import android.app.Dialog; 
import android.app.DialogFragment; 
import android.os.Bundle; 
import android.widget.DatePicker; 


public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    // Use the current date as the default date in the picker 
    final Calendar c = Calendar.getInstance(); 
    int year = c.get(Calendar.YEAR); 
    int month = c.get(Calendar.MONTH); 
    int day = c.get(Calendar.DAY_OF_MONTH); 


    // Create a new instance of DatePickerDialog and return it 
    return new DatePickerDialog(getActivity(), this, year, month, day); 
} 


@Override 
public void onDateSet(DatePicker v, int year, int month, int day) { 
    // TODO Auto-generated method stub 

    switch (v.getId()){ 

    case R.id.datesel1: 
     toDate.setText(new StringBuffer()); 
    } 
} 


} 

顯然是不全面,TODATE是它是假設管理TextViews之一。 datesel1是ImageButton。它將附加TextView以包含01/02/2013格式的設置日期。我無法將TextView聲明爲靜態,因此我無法在此類中調用它。那麼,我應該讓onDateSet調用一個靜態方法,將TextView設置爲它需要做的事情?或者我該怎麼做?

回答

4

創建單獨的類的對話框,使一個getter爲聽衆:

public class DatePickerFragment extends DialogFragment 
{ 
    private OnDateSetListener onDateSetListener; 

    public DatePickerFragment() {} 

    public void setOnDateSetListener(OnDateSetListener onDateSetListener) { 
     this.onDateSetListener = onDateSetListener; 
    } 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     // Use the current date as the default date in the picker 
     final Calendar c = Calendar.getInstance(); 
     int year = c.get(Calendar.YEAR); 
     int month = c.get(Calendar.MONTH); 
     int day = c.get(Calendar.DAY_OF_MONTH); 

     // Create a new instance of DatePickerDialog and return it 
     return new DatePickerDialog(getActivity(), onDateSetListener, year, month, day); 
    } 

} 

DatePickerDialog.OnDateSetListener的實施,使你的另一片段的活動,你必須參考你的TextView。
然後創建一個日曆和使用SimpleDateFormat,看到一個example

public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
     Calendar cal = Calendar.getInstance(); 
     cal.set(year, monthOfYear, dayOfMonth); 
    <=== YOUR SETTEXT TO YOUR TEXTVIEW HERE ===> 
} 
+0

所以我的主要活動,但在DatePickerFragment initilized實際監聽中使用的onDateSet? –

+0

這也是一個選項。 – NickF

+0

如何將日期值設置爲5 onDateSet()中動態生成的編輯文本視圖?我爲每個動態生成的編輯文本設置日期選擇器。 –

相關問題