我使用特定的日期库(https://github.com/mohamad-amin/PersianMaterialDateTimePicker)
现在我想在Recycler View中的按钮中使用它。
现在我的问题是我必须在库代码中定义两个选项:
1 - 我应该参考活动。
2 - 我需要使用getSupport FragmentManager()。
但此页面已使用Recycler View.Adapter扩展,我不知道如何在此页面上调用这两个选项。
RecyclerViewAdapter页面:
PersianCalendar persianCalendar = new PersianCalendar();
DatePickerDialog datePickerDialog = DatePickerDialog.newInstance( StudentList.this ,
persianCalendar.getPersianYear() ,
persianCalendar.getPersianMonth() ,
persianCalendar.getPersianDay());
datePickerDialog.show( getSupportFragmentManager() , "datePickerDialog" );
在这些图片中,您可以轻松了解我:
答案 0 :(得分:1)
您的活动必须实现66
并实现抽象方法TimePickerDialog.OnTimeSetListener
:
onTimeSet
和 public class StudentList extends AppCompatActivity implements TimePickerDialog.OnTimeSetListener {
@Override
public void onTimeSet(TimePickerDialog view, int hourOfDay, int minute, int second) {
}
}
onClick
或者:
DatePickerDialog datePickerDialog = DatePickerDialog.newInstance((((StudentList)view.getContext()), persianCalendar.getPersianYear(),
persianCalendar.getPersianMonth(),
persianCalendar.getPersianDay());
答案 1 :(得分:0)
您可以在创建适配器实例时尝试传递Activity的上下文:
//Code in your Activity
MyAdapter myAdapter = new MyAdapter(this, ...);
您的适配器:
private Context context;
public MyAdapter(Context context, ...){
this.context = context;
//Rest of the constructor...
}
通过这样做,你可以添加这样做:
datePickerDialog.show(context.getSupportFragmentManager(), "datePickerDialog");
答案 2 :(得分:0)
您只需要在构造函数中传递一个活动上下文。一定要从活动中调用新的Adapter(this,...),从片段调用新的Adapter(getActivity(),...)。
private Context context;
@Override
public void onClick(View v) {
FragmentManager manager = ((Activity) context).getFragmentManager();
FragmentManager manager = ((AppCompatActivity)context).getSupportFragmentManager();
}
试试这个