我试图显示不同的日期在不同的TextViews在一个片断中的答案后,MH在TimePicker onTimeSet上对这个问题的回答没有被调用,但我没有得到相同的结果为一个片断。
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
private int mId;
DatePickerDialogListener mListener;
protected static DatePickerFragment newInstance(int id) {
Bundle args = new Bundle();
args.putInt("picker_id", id);
DatePickerFragment fragment = new DatePickerFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// ... omitted
final Calendar c = Calendar.getInstance();
int mDay = c.get(Calendar.DAY_OF_MONTH);
int mMonth = c.get(Calendar.MONTH);
int mYear = c.get(Calendar.YEAR);
mId = getArguments().getInt("picker_id");
mListener = getActivity() instanceof DatePickerFragment.DatePickerDialogListener ? (DatePickerFragment.DatePickerDialogListener) getActivity() : null;
// Create a new instance of TimePickerDialog and return it
return new DatePickerDialog(getActivity(), this, mYear, mMonth, mDay);
}
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
if (mListener != null) mListener.onDateSet(mId, view, year, month, dayOfMonth);
}
public static interface DatePickerDialogListener {
public void onDateSet(int id, DatePicker view, int year, int month, int dayOfMonth);
}
}
将使用此datepickerdialog的片段类药物具有以下代码:
public class Medication extends Fragment implements DatePickerFragment.DatePickerDialogListener {
private static final int FIRST_VISIT_ID = 1;
private static final int SECOND_VISIT_ID = 2;
private static final int THIRD_VISIT_ID = 3;
private int mYear;
private int mMonth;
private int mDay;
protected static TextView date1;
protected static TextView date2;
protected static TextView date3;
public Medication() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_medication, container, false);
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
date1 =(TextView) view.findViewById(R.id.visit_date1);
date2 =(TextView) view.findViewById(R.id.visit_date2);
date3 =(TextView) view.findViewById(R.id.visit_date3);
date1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment newFragment = DatePickerFragment.newInstance(FIRST_VISIT_ID);
newFragment.show(getFragmentManager(), "timePicker");
}
});
date2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment newFragment = DatePickerFragment.newInstance(SECOND_VISIT_ID);
newFragment.show(getFragmentManager(), "timePicker");
}
});
date3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment newFragment = DatePickerFragment.newInstance(THIRD_VISIT_ID);
newFragment.show(getFragmentManager(), "timePicker");
}
});
date1.setText(
new StringBuilder()
// Month is 0 based so add 1
.append(mDay).append("/")
.append(mMonth + 1).append("/")
.append(mYear).append(" "));
date2.setText(
new StringBuilder()
// Month is 0 based so add 1
.append(mDay).append("/")
.append(mMonth + 1).append("/")
.append(mYear).append(" "));
date3.setText(
new StringBuilder()
// Month is 0 based so add 1
.append(mDay).append("/")
.append(mMonth + 1).append("/")
.append(mYear).append(" "));
return view;
}
@Override
public void onDateSet(int id, DatePicker view, int year, int month, int dayOfMonth) {
Log.i("DatePicker", "Date picker set from id " + id + "!");
if(id == FIRST_VISIT_ID)
{
this.date1.setText(
new StringBuilder()
// Month is 0 based so add 1
.append(dayOfMonth).append("/")
.append(month + 1).append("/")
.append(year).append(" "));
}
if(id == SECOND_VISIT_ID)
{
this.date2.setText(
new StringBuilder()
// Month is 0 based so add 1
.append(dayOfMonth).append("/")
.append(month + 1).append("/")
.append(year).append(" "));
}
if(id == THIRD_VISIT_ID)
{
this.date3.setText(
new StringBuilder()
// Month is 0 based so add 1
.append(dayOfMonth).append("/")
.append(month + 1).append("/")
.append(year).append(" "));
}
}
}
我也尝试过为Time Picker对话框添加多个Picker的方法,但出现了相同的问题,即Pharming类中的onTimeSet方法没有像这里的OnDateSet那样被调用。
问题是,当我单击textView时,对话框会打开,但在我更改日期后,该textView的日期不会更改。此外,由于未调用onDateSet方法,因此不会显示日志信息消息。也许在这种情况下mListener是空的,我只能猜测。请帮我解决这个问题。提前谢了。
尝试在片段的onDateSet中添加一些日志,以查看在那里设置了哪些值,以及它是否调用了侦听器。
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
Log.i("Fragment/onDateSet", "Date picker set from id " + mId+ "!");
if (mListener != null)
mListener.onDateSet(mId, view, year, month, dayOfMonth);
else
Log.w("Fragment/onDateSet", "But no listener available!");
}
并尝试为不同的片段放置不同的标记,因为现在您正在用相同的标记来标记它们
newFragment.show(getFragmentManager(), "timePicker2");
我遇到的情况是,当我在每个edittext视图中单击时,需要用日期填充动态呈现的多个编辑文本(edittext视图是以编程方式呈现的)。我不知道需要多少编辑文本,因此不能在布局XML文件中硬编码它们。 尽管我能够正确地呈现视图,但当我试图在一个edittext上设置日期时,该值总是在组中的最后一个edittext上设置。我不知道如何发送一个唯一的id来标识选定的edittext,以便正确设置日期。
Android BottomNavigationView图标/文本菜单项不适合某些设备(共4项)。在nexus 5 emulator上,必须旋转才能显示所有项目。无论是从纵向视图还是横向视图开始,图标仅在设备旋转时显示(例如,请参见下面的图像) 我试过一些我可以测试的物理设备,它在所有这些设备上都能正常工作(无论大小),我相信根据测试仪,它对三星S7/8也不起作用,但无法证实这一点。 在肖像中打开
问题是:我还没有找到一个有效的解决方案,允许我在我的recyclerview适配器中使用 我知道我的选择似乎要么是实现一个接口,要么是使用lambda,然而我一直在尝试我能找到的一切,但没有一个是有效的。 我在以下地方尝试过解决方案: 项目Onclick RecyclerView Kotlin Android 科特林的RecyclerView onClick 如何将点击监听器添加到我的回收器视图(
我在动态应用程序中使用片段,其中User.java文件包含值,而< code>TabbedActivity.java文件包含三个片段。我想将文本设置为< code > profile rgament . Java 中的< code>TextView。因此,我在< code > fragment _ profile . XML 中创建了一个< code>TextView,并使用以下代码从< code
问题内容: 在android中,我正在使用默认的CalendarView。我将背景设置为浅灰色。但是我可以更改日历视图的月视图的颜色吗? 问题答案: 正如您所发现的,TextView是私有的,似乎没有任何访问它的方法。 尽管我不推荐这样做,但是您可以使用以下程序包来完成此操作:
在android中,我使用的是默认的日历视图。我已将背景设置为浅灰色。但是我可以改变日历视图的月份视图的颜色吗?