java - 通过 Java 访问 fragment 中的 CalendarView

标签 java android

我想在 Fragment 中使用 CalendarView,但我不知道如何通过 Java 访问它。首先,我只想在 toast 中显示选定的日期,但如果我单击日期,似乎不会调用该函数。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Fragments.SchedulerFragment">
    <CalendarView
        android:id="@+id/scheduler_calendar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></CalendarView>
</RelativeLayout>
public class SchedulerActivity extends AppCompatActivity {
    private CalendarView calendarView;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        calendarView = (CalendarView) findViewById(R.id.scheduler_calendar);

        calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
            @Override
            public void onSelectedDayChange(CalendarView calendarView, int i, int i1, int i2) {
                Toast.makeText(SchedulerActivity.this, "Date changed to" + i2 + "." + i1 + "." + i, Toast.LENGTH_SHORT).show();
            }
        });
    }
}

最佳答案

onViewCreated 方法中设置 setOnDateChangeListener 并在 Toast 中使用 getActivity()。我测试了下面的代码并且它可以工作。

public class SchedulerFragment extends Fragment {

    private CalendarView calendarView;

    public SchedulerFragment() {
        // Required empty public constructor
    }


    @Override
    public void onViewCreated(@NonNull final View view, @Nullable final Bundle savedInstanceState) {
        calendarView = view.findViewById(R.id.scheduler_calendar);
        calendarView.setOnDateChangeListener(new OnDateChangeListener() {
            @Override
            public void onSelectedDayChange(@NonNull final CalendarView view, final int year, final int month,
                    final int dayOfMonth) {
                Toast.makeText(getActivity(), "Date changed to" + dayOfMonth + "." + month + "." + year, Toast.LENGTH_SHORT).show();
            }
        });
    }

    @Override
    public View onCreateView(
            @NonNull LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View root = inflater.inflate(R.layout.fragment_scheduler, container, false);
        return root;
    }

}

关于java - 通过 Java 访问 fragment 中的 CalendarView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57160618/

相关文章:

java - NetworkOnMainThreadException 即使在实现 AsyncTask 之后

java - 构建 APK 时 Android Studio "MethodHandle.invoke and MethodHandle.invokeExact are only supported starting with Android O (--min-api 26)"错误

android - ViewPager 滑动和 RecyclerView 滚动之间的冲突

android - 等级错误:找不到ID为 'com.android.model.application'的插件

java - 我的 minSdkVersion 和 targetSdkVersion 是什么?

java - Google Guava 可选 - 如何短路多个链式表达式

Java 只获取没有 StackTrace 的异常名称

Java Eclipse 运行项目给出搜索主要类型的消息

android - Android DialogFragment 中的非英文文本显示为问号

java - 如何在 Java 中单击 jbutton 时启动操作