你能得到日期选择器的标签吗
Can you get the tag of a date picker
我在 android 应用程序中打开不同的日期选择器片段。
碎片是这样打开的
DialogFragment datePicker = new DatePickerFragment();
datePicker.show(getSupportFragmentManager(), "MY_TAG");
我实现了 onDateSet 方法,该方法具有选择的日期和 DatePicker 对象。现在我尝试从 DatePicker 对象中获取标签以检查显示了哪个选择器。
有方法datePicker.getTag()
,但是这个returns null.
有没有办法获取在显示方法中提交的标签?
通过调用 datePicker.getTag()
,您得到了错误的标签;这是 DatePicker
标签,而不是 DatePickerFragment
标签。
要查看正确的标签,只需在自定义 DatePickerFragment
中使用 getTag()
getTag() inside my Fragement class works fine. But how to I pass the
tag back to my activity where I called show() My Fragement currently
only contains the onCreateDialog method where I return a new
DatePickerDialog instance
您可以将侦听器传递给 DatePickerFragment
构造函数,并在您设置日期时使用 Fragment 标记触发其回调。
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
interface OnDateAdjustedListener {
void onDateAdjusted(String tag);
}
private OnDateAdjustedListener mOnDateAdjustedListener;
// Constructor with a Listener
public DatePickerFragment(OnDateAdjustedListener onDateAdjustedListener) {
mOnDateAdjustedListener = onDateAdjustedListener;
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// .... Handle onCreateDialog
}
@Override
public void onDateSet(DatePicker datePicker, int year, int month, int dayOfMonth) {
// .... Handle onDateSet
// callback with fragment tag
mOnDateAdjustedListener.onDateAdjusted(getTag());
}
}
并在你的activity中修改构造函数,实现接口
public class MainActivity extends AppCompatActivity implements View.OnClickListener, DatePickerFragment.OnDateAdjustedListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DatePickerFragment dateFragment = new DatePickerFragment(this);
}
@Override
public void onDateAdjusted(String tag) {
Toast.makeText(this, tag, Toast.LENGTH_SHORT).show();
}
}
我在 android 应用程序中打开不同的日期选择器片段。
碎片是这样打开的
DialogFragment datePicker = new DatePickerFragment();
datePicker.show(getSupportFragmentManager(), "MY_TAG");
我实现了 onDateSet 方法,该方法具有选择的日期和 DatePicker 对象。现在我尝试从 DatePicker 对象中获取标签以检查显示了哪个选择器。
有方法datePicker.getTag()
,但是这个returns null.
有没有办法获取在显示方法中提交的标签?
通过调用 datePicker.getTag()
,您得到了错误的标签;这是 DatePicker
标签,而不是 DatePickerFragment
标签。
要查看正确的标签,只需在自定义 DatePickerFragment
getTag()
getTag() inside my Fragement class works fine. But how to I pass the tag back to my activity where I called show() My Fragement currently only contains the onCreateDialog method where I return a new DatePickerDialog instance
您可以将侦听器传递给 DatePickerFragment
构造函数,并在您设置日期时使用 Fragment 标记触发其回调。
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
interface OnDateAdjustedListener {
void onDateAdjusted(String tag);
}
private OnDateAdjustedListener mOnDateAdjustedListener;
// Constructor with a Listener
public DatePickerFragment(OnDateAdjustedListener onDateAdjustedListener) {
mOnDateAdjustedListener = onDateAdjustedListener;
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// .... Handle onCreateDialog
}
@Override
public void onDateSet(DatePicker datePicker, int year, int month, int dayOfMonth) {
// .... Handle onDateSet
// callback with fragment tag
mOnDateAdjustedListener.onDateAdjusted(getTag());
}
}
并在你的activity中修改构造函数,实现接口
public class MainActivity extends AppCompatActivity implements View.OnClickListener, DatePickerFragment.OnDateAdjustedListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DatePickerFragment dateFragment = new DatePickerFragment(this);
}
@Override
public void onDateAdjusted(String tag) {
Toast.makeText(this, tag, Toast.LENGTH_SHORT).show();
}
}