2017-06-22 69 views
0

我设法创建了日期选择器类,但现在我希望将日期选择器对话框中的值返回到主活动类。以下是日期选取器对话框的代码。如何将日期从DatePickerDialog返回到主要活动

public class DateChooser extends DialogFragment implements DatePickerDialog.OnDateSetListener{ 

    public int y,m,d; 

    public Dialog onCreateDialog(Bundle savedInstanceState) 
    { 
     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); 

     return new DatePickerDialog(getContext(),this,year,month,day); 

    } 
    @Override 
    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { 
     Toast.makeText(getContext(), "Toast!", Toast.LENGTH_SHORT).show(); 
     setDay(dayOfMonth); 
     setMonth(month); 
     setYear(year); 


    } 

我已经从mainactivity调用这个类。

public void dateSelect(View view) 
{ 
DateChooser dateC = new DateChooser(); 
dateC.show(getSupportFragmentManager(),"tag"); 
} 
+0

从活动或界面调用方法。 – Piyush

+0

请稍微详细一点。 :) –

回答

0

您可以创建一个界面,例如这样

public interface DateListener { 
    void onDateSelected(int day, int month, int year); 
} 

,并实现它在你的活动

public class YourActivity extends Activity implements DateListener {...} 

,那么你必须实现该方法在您的活动......

在你Fragment添加以下字段:

private DateListener dateListener; 

的上一页|将下载的代码添加到您的分享标签:onAttach

@Override 
public void onAttach(Context context) { 
    super.onAttach(context); 

    if (!(getActivity() instanceof DateListener)) { 
     throw new ClassCastException("The activity inflating this fragment must implement DateListener!"); 
    } 
    dateListener = (DateListener) getActivity(); 
} 

现在你已经确立了自己的活动为DateListener,可以用它的DatePicker

+0

onAttach不是活动 – matrix

+0

的方法是true,但您仍然需要它在片段中 - 它在片段附加到活动时调用。在这里您需要将您的活动设置为DateListener – Katharina

0
DatePicker datePicker = (DatePicker) findViewById(R.id.datePicker1); 
int day = datePicker.getDayOfMonth(); 
int month = datePicker.getMonth() + 1; 
int year = datePicker.getYear(); 
String dateInString=year+"-"+month+"-"+day; 
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 
Date date = formatter.parse(dateInString); 
System.out.println(date); 
0

结果做到这一点:

一下添加到DateChooser类:

private DateSelectedListener mListener; 

@Override 
public void onDateSet(DatePicker view, int year, int month, int day) { 
    // Do something with the date chosen by the user 
    mListener.onDateSelected(view, year, month, day); 
} 

public void display(FragmentManager manager, String tag, DateSelectedListener listener) { 
    super.show(manager, tag); 
    mListener = listener; 
} 

public interface DateSelectedListener { 
    void onDateSelected(DatePicker view, int year, int month, int day); 
} 

在您的活动中这样做:

public class MyActivity extends AppCompatActivity implements DateChooser.DateSelectedListener { 
    //onCreate or whatever other method: 
    dateChooser.display(
      getActivity().getSupportFragmentManager(), 
      "datePicker", this); 
} 

祝你好运!!!

相关问题