有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在Android Studio的片段中添加日历?

我目前正在尝试制作一个应用程序,需要在其中一个选项卡中包含多个选项卡和一个日历。我使用片段来创建多个选项卡,但我没有找到如何在其中实现日历。我试图通过使用调色板将其添加到xml文件中,但在主菜单中出现了一个空错误

java.lang.NullPointerException: Attempt to invoke virtual method 'void 安卓x.viewpager.widget.ViewPager.setAdapter(安卓x.viewpager.widget.PagerAdapter)' on a null object reference

这是我的日历。xml文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
    安卓:layout_width="match_parent"
    安卓:layout_height="match_parent">

    <TextView
        安卓:layout_width="wrap_content"
        安卓:layout_height="wrap_content"
        安卓:layout_centerHorizontal="true"
        安卓:layout_centerVertical="true"
        安卓:text="Calendar layer"
       />

    <CalendarView
        安卓:id="@+id/calendarView"
        安卓:layout_width="match_parent"
        安卓:layout_height="wrap_content"
        安卓:layout_centerInParent="true" />


</RelativeLayout>

这是我的主要活动。爪哇

package com.example.nootropicsmonitoringapp; import 安卓.os.Bundle; import 安卓.os.Handler; import 安卓.widget.CalendarView; import 安卓x.annotation.NonNull; import 安卓x.appcompat.app.AppCompatActivity; import 安卓x.viewpager.widget.ViewPager; import com.google.安卓.material.tabs.TabLayout; public class MainActivity extends AppCompatActivity { TabLayout tabLayout; ViewPager viewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tabLayout =findViewById(R.id.tabLayout); viewPager = findViewById(R.id.view_pager); getTabs(); } public void getTabs(){ final ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager()); new Handler().post(new Runnable() { @Override public void run() { ViewPagerAdapter.addFragment(SubstanceListFragment.getInstance(), "Substance List"); ViewPagerAdapter.addFragment(CalendarFragment.getInstance(), "Calendar"); ViewPagerAdapter.addFragment(RecapFragment.getInstance(), "Recap"); viewPager.setAdapter(viewPagerAdapter); tabLayout.setupWithViewPager(viewPager); } }); } }

知道我能改变什么来解决这个问题吗

谢谢你的帮助

(我是安卓 studio的新手,在网上找不到任何答案,所以我在这里提问)


共 (1) 个答案

  1. # 1 楼答案

    要使用View Pager,请先创建如下适配器类:

    public class Adapter extends FragmentStateAdapter {
    
    public Adapter(@NonNull FragmentActivity fragmentActivity) {
        super(fragmentActivity);
    }
    
    @NonNull
    @Override
    public Fragment createFragment(int position) {
        return if (position == 0) {
            new FirstFragment()
        } else {                       // Use Switch Statement here.
            new SecondFragment()
        }
    }
    
    @Override
    public int getItemCount() {
        return 2; // The number of tabs your Tab Layout has 
    }
    }
    

    然后在视图寻呼机上设置此适配器

    binding.viewPager.setAdapter(new Adapter(this)); 
    

    “设置”选项卡布局和“查看寻呼机”

    tabLayout.setupWithViewPager(viewPager);
    

    现在它可以正常工作了