当前位置: 首页 > 知识库问答 >
问题:

使用AppCompatActivity时,适配器中未定义getSupportFragmentManager()

闽阳州
2023-03-14

我有一个扩展AppCompatActivity的活动(MainActivity),因为我在应用程序中使用了一些材质设计元素。

然后我有一个带有几个字段和一个按钮的数组适配器。此适配器具有单独的视图并被注入到我的Mainactive布局中。

当我单击适配器视图上的按钮时,我想打开一个显示一堆文本的新片段,但是,我似乎无法做到这一点,我认为这是因为我没有在我的MainActive中扩展FragmentActive?我在另一篇文章中读到,我应该能够扩展AppCompatActive并且仍然能够引用片段管理器...这是我打开片段的代码

在我的自定义数组适配器中,按钮的onClick():

holder.desc.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View view) {
      JobDescFragment fragment= new JobDescFragment();
      FragmentTransaction transaction =      getSupportFragmentManager().beginTransaction();
      transaction.replace(R.id.fragment_container, fragment);
      transaction.addToBackStack(null);  
      transaction.commit();
  }
});

我得到的错误是它无法解析getSupport portFragmentManager()。我做错了什么?

我正在导入android。支持v4.app。片段和。适配器中的FragmentManager。

提前感谢您的帮助!

<merge
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <com.lorentzos.flingswipe.SwipeFlingAdapterView
        android:id="@+id/frame"
        android:background="@color/laborswipe_lightgray"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:context=".MainActivity"
        android:layout_gravity="top"   />

    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</merge>

共有3个答案

孟文栋
2023-03-14

嗨,这很简单,只需传递父活动的引用,只需在适配器类中使用下面这样的代码段即可打开片段

Fragment fragment = new YourFragment();
FragmentManager fm = ((MainActivity) mContext).getSupportFragmentManager();
                FragmentTransaction ft = fm.beginTransaction();
                ft.add(R.id.frame_container, fragment);
                ft.commit();
漆雕硕
2023-03-14

例如,在科特林,情况就是这样。我试过了,效果很好

val dialog = IntervAddFragment()//The fragment that u want to open for example
       val ft = (context as AppCompatActivity).supportFragmentManager.beginTransaction()
        dialog.show(ft, ContentValues.TAG)
戚研
2023-03-14

你可以试试这个

FragmentTransaction ft = ((AppCompatActivity) mContext).getSupportFragmentManager()
                        .beginTransaction();
 类似资料:
  • 我在我的应用程序中使用了reverfit(V2.9.0)和Moshi(V1.11.0)。我尝试这样调用endpoint: 但是WatchStatus->JSON转换没有像预期的那样工作。WatchStatus是一个简单的枚举类: 我创建了一个自定义适配器,因为我的应用程序使用大写枚举名称,而后端使用小写名称: 我以以下方式创建Moshi实例: 并且我的改型实例使用它(带有Koin注入): 解析Js

  • 谁能帮助我理解我做错了什么,以及我如何触发onRequestPermissionsResult,以便我可以在应用程序中启动下一个活动?

  • 英文原文:http://emberjs.com/guides/models/customizing-adapters/ 在Ember Data中,处理与后台数据仓库通信的逻辑是通过Adapter来完成的。Ember Data适配器内置了一些关于REST API的假定。如果后台的实现与Ember Data假定的惯例不同,那么通过扩展缺省的适配器可能很容易的实现。 有时因为一些原因需要自定义适配器,例

  • Ember.js适配器指定如何在后端数据存储中保存数据,例如URL格式和REST API标头。 默认的Ember适配器包含一些REST API的内置假设。 这些假设有助于更轻松,更好地构建Web应用程序。 可以使用以下命令创建适配器 - ember generate adapter adapter-name 运行上面的命令时,它将显示以下行 - import DS from 'ember-dat

  • 问题内容: 我看了以下网站: ListView示例 其中描述了如何在使用默认适配器的列表视图中实现搜索功能,并且效果很好。 如何修改它,以便可以将其用于列表视图的自定义适配器? 部分代码为: 问题答案: 您需要覆盖适配器内部的getFilter并返回您创建的新的customFilter对象。看到这个答案: 编辑:

  • 本文向大家介绍Android编程中常用适配器及自定义适配器用法实例分析,包括了Android编程中常用适配器及自定义适配器用法实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android编程中常用适配器及自定义适配器用法。分享给大家供大家参考,具体如下: 一、适配器. 顾名思义,就是把一些数据给弄得适当,适合以便于在View上显示。可以看作是界面数据绑定的一种理解。它所操纵的数据