【问题标题】:creating android library from fragment [duplicate]从片段创建android库[重复]
【发布时间】:2022-01-04 19:02:41
【问题描述】:

我有一个片段,我想将它用作其他项目中的库。 我创建了一个库模块并将我的所有片段代码和资源复制粘贴到库模式,然后使用该库模块我在活动的 xml 中编写以下代码

<androidx.fragment.app.FragmentContainerView
android:id="@+id/fragmentContainerView"
android:name="com.dhirunand.meter.MeterFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

在java文件中

MeterFragment meterFragment = new MeterFragment();
String selectedNumber = meterFragment.getSelectedNumber();

视觉上图书馆的mudule工作正常,但我无法从图书馆模块中获取数据

项目github地址https://github.com/dhirunand/meter--number-picker

【问题讨论】:

    标签: java android android-layout android-library


    【解决方案1】:

    当您使用new MeterFragment() 行时,您正在创建NEW 片段,而不是使用附加到FragmentContainerView 的片段。这个 NEW 在屏幕上不可见,它只是在内存中创建的,没有显示(因为您还没有发布附加代码),所以 getSelectedNumber() 将返回默认值而不是 @987654325 中的设置@附FragmentContainerView

    您应该通过

    从 XML 中获取这个“真实的”现有且可见的实例
    FragmentContainerView fcv = (FragmentContainerView) findViewById(R.id.fragmentContainerView);
    MeterFragment meterFragment = (MeterFragment) fcv.getFragment();
    

    【讨论】:

    • 是的,我明白了我的问题,谢谢。但是 Android Studio 无法从 FragmentContainerView 解析 getFragment() 方法。我检查了这个帖子stackoverflow.com/questions/68018322/…,但没有得到任何解决方案
    • 貌似这个getFragment()是后来介绍的,你更新了你的libimport了吗?
    • 在更新导入实现“androidx.fragment:fragment:1.4.0”后它工作正常。非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多