为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我在使用带有片段的 RecyclerView 时不断收到空引用错误

为什么我在使用带有片段的 RecyclerView 时不断收到空引用错误

料青山看我应如是 2022-07-20 10:34:12
我为我的应用程序使用片段。我还使用了一个导航抽屉,它通过抽屉中的按钮打开片段。我试图用它的适配器和数组列表为我的 recyclerview 显示一些基本的图像和文本。我遇到的问题是我不知道如何修改代码以对我的片段使用 recyclerview,因为我看到的所有教程都不使用片段。以下是我的活动代码:public class secondActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {private DrawerLayout drawer;private RecyclerView mRecyclerView;private RecyclerView.Adapter mAdapter;private RecyclerView.LayoutManager mLayoutManager;@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_second);    ArrayList<exampleItemBooks> exampleList = new ArrayList<>();    exampleList.add(new exampleItemBooks(R.drawable.artofwar, "Line 1", "Line     2"));    exampleList.add(new exampleItemBooks(R.drawable.aristotle, "Line 3",     "Line 4"));    exampleList.add(new exampleItemBooks(R.drawable.caesarbook, "Line 5",     "Line 6"));    exampleList.add(new exampleItemBooks(R.drawable.platorepublic, "Line 7",     "Line 8"));    exampleList.add(new exampleItemBooks(R.drawable.senecaletters, "Line 9",     "Line 10"));    exampleList.add(new exampleItemBooks(R.drawable.thehistoryofmypeople,     "Line 11", "Line 12"));    exampleList.add(new exampleItemBooks(R.drawable.theprince, "Line 13",     "Line 14"));    exampleList.add(new exampleItemBooks(R.drawable.thritysixstrategems,     "Line 15", "Line 16"));    exampleList.add(new exampleItemBooks(R.drawable.medidations, "Line 17",     "Line 18"));    mRecyclerView = findViewById(R.id.recyclerViewBooks);    mRecyclerView.setHasFixedSize(false);    mLayoutManager = new LinearLayoutManager(this);    mAdapter = new exampleBooksAdapter(exampleList);    mRecyclerView.setLayoutManager(mLayoutManager);    mRecyclerView.setAdapter(mAdapter);    Toolbar toolbar = findViewById(R.id.toolbarMain);    setSupportActionBar(toolbar);
查看完整描述

1 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

您的代码失败,因为您的 Activity 正在尝试访问RecyclerViewFragment 布局的一部分,并且您的 Fragment 布局在您调用后无法立即使用setContentView()(即使在您replace()操作之后,它也只能异步使用,因为您使用commit()而不是commitNow())。

片段应该(尽可能)是自包含的。这意味着如果您的 Fragment 拥有RecyclerView,它应该负责将数据加载到其中:而不是您的 Activity。

您应该将 Activity 中与 Fragment 接触的所有代码移至RecyclerViewFragment - 理想情况下,移动到诸如 之类的方法中onViewCreated(),该方法使您可以访问已膨胀的视图,onCreateView()并且是调用findViewById()和获取RecyclerView.


查看完整回答
反对 回复 2022-07-20
  • 1 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信