【发布时间】:2016-09-09 18:18:56
【问题描述】:
我想显示一个在片段中实现 datepickerdialog 的对话框片段! 我有一个按钮,其侦听器显示 datepickerdialog。 按钮在片段布局中定义为:
<Button
android:id="@+id/buttonSelectDate"
android:layout_width="wrap_content"
android:layout_alignParentRight="true"
android:layout_height="wrap_content"
android:onClick="showDatePickerDialog" />
片段类的代码如下(我的问题在showDatePickerDialog函数):
public class SchedulerChooserFragment extends Fragment {
private int year;
private int month;
private int day;
TextView dateText;
View rootView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
LayoutInflater lf = getActivity().getLayoutInflater();
rootView = lf.inflate(R.layout.fragment_scheduler_chooser, container,false);
return rootView;
}
// display current date
public void showCurrentDateOnView() {
dateText = (TextView) rootView.findViewById (R.id.textDate);
final Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
System.out.println("year" + year);
// set current date into textview
dateText.setText(month + 1 +"-"+day+"-"+year);
// set current date into datepicker
}
public void showDatePickerDialog(View v) {
DialogFragment newFragment = new DatePickerFragment(dateText);
newFragment.show(getSupportFragmentManager(), "datePicker");
}
}
但是,getSupportFragmentManager 不存在于片段中。 我试过 getActivity().getSupportFragmentManager 但应用程序崩溃了。 另外,我试过getChildFragmentManager,应用也崩溃了。
datePickerFragment 类如下:
import java.util.Calendar;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.widget.DatePicker;
import android.widget.TextView;
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener{
TextView txtDate;
public DatePickerFragment(TextView txtDate) {
super();
this.txtDate = txtDate;
}
@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);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
/*txtDate.setText(year+" " +month +" "+ date);*/
}
}
我是安卓新手!抱歉,如果我的问题很明显。
谢谢
【问题讨论】:
标签: android android-activity android-fragments android-dialogfragment