从片段创建 android 个库
creating android library from fragment
我有一个片段,我想将它用作其他项目中的库。
我创建了一个库模块,并将我所有的片段代码和资源复制粘贴到库模式,然后为了使用该库模块,我在 activity 的 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();
视觉库模块工作正常,但我无法从库模块中获取数据
项目githuburlhttps://github.com/dhirunand/meter--number-picker
当您使用 new MeterFragment()
行时,您正在创建 NEW 片段,而不是使用附加到 FragmentContainerView
的片段。这个 NEW 一个在屏幕上不可见,它只是在内存中创建,没有显示(因为你没有发布附加代码),所以 getSelectedNumber()
将 return 默认值而不是这个设置在 MeterFragment
附加到 FragmentContainerView
您应该通过
从XML获得这个“真实的”现有可见实例
FragmentContainerView fcv = (FragmentContainerView) findViewById(R.id.fragmentContainerView);
MeterFragment meterFragment = (MeterFragment) fcv.getFragment();
我有一个片段,我想将它用作其他项目中的库。 我创建了一个库模块,并将我所有的片段代码和资源复制粘贴到库模式,然后为了使用该库模块,我在 activity 的 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();
视觉库模块工作正常,但我无法从库模块中获取数据
项目githuburlhttps://github.com/dhirunand/meter--number-picker
当您使用 new MeterFragment()
行时,您正在创建 NEW 片段,而不是使用附加到 FragmentContainerView
的片段。这个 NEW 一个在屏幕上不可见,它只是在内存中创建,没有显示(因为你没有发布附加代码),所以 getSelectedNumber()
将 return 默认值而不是这个设置在 MeterFragment
附加到 FragmentContainerView
您应该通过
从XML获得这个“真实的”现有可见实例FragmentContainerView fcv = (FragmentContainerView) findViewById(R.id.fragmentContainerView);
MeterFragment meterFragment = (MeterFragment) fcv.getFragment();