首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过Java访问片段中的CalendarView

通过Java访问片段中的CalendarView
EN

Stack Overflow用户
提问于 2019-07-23 17:10:02
回答 2查看 83关注 0票数 0

我想在片段中使用CalendarView,但是我不知道如何通过Java访问它。开始的时候,我只是想在一个toast中显示所选的日期,但是如果我单击一个日期,函数似乎不会被调用。

代码语言:javascript
复制
<?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>
代码语言:javascript
复制
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();
            }
        });
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-23 22:17:26

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

代码语言:javascript
复制
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;
    }

}
票数 1
EN

Stack Overflow用户

发布于 2019-07-23 17:28:33

下面是为您提供的有效解决方案。

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <CalendarView
        android:id="@+id/scheduler_calendar"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>

活动如下

代码语言:javascript
复制
public class SchedulerActivity extends AppCompatActivity {

    private CalendarView calendarView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        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();
            }
        });
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57160618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档