相关疑难解决方法(0)

使用导航组件导航到首选项片段

我正在尝试将中型应用程序迁移到新的Android navigation组件。

目前,我的应用程序由组成,single activity并且我打算将其保持不变(就此而言);因此,我面临的问题是我有一个设置片段(PreferenceFragment),基本上可以从其他所有片段中导航到该片段。该导航是通过应用栏中的菜单进行的,因此onOptionsItemSelected(包含此导航)位于主活动中。

导航图

我在确定将线连接settingsFragment到其他线的正确方法时遇到了麻烦。对我来说,将它连接到所有其他对象似乎是意大利面条。

  1. 应该settingsFragment连接到所有其他片段吗?

  2. 由于Google没有给出足够的理由(或任何理由)来支持单一活动的应用程序体系结构,我应该放弃它吗?

android android-jetpack android-architecture-navigation

11
推荐指数
3
解决办法
1577
查看次数

片段声明了不属于此FragmentManager的目标片段

我做了一个活动A,里面有一个片段x.通过片段x,编辑单击事件上的文本项,我想打开另一个片段y,其中显示列表,我只需按列表上的名称,y片段关闭并将列表的选定名称发送到片段x编辑文本和我做的代码是

YFragment y = new YFragment();
y.setTargetFragment(x.class, code);
getActivity().getSupportFragmentManager()
.beginTransaction()
.replace(R.id.frame, y)
.addToBackStack(null).commit();
Run Code Online (Sandbox Code Playgroud)

并且在片段yi中,目标代码发送数据,但上面的代码块中存在问题.如果我评论设置目标片段行代码将工作,但没有用,因为数据将不会发送,但如果我运行应用程序此错误发生

java.lang.IllegalStateException:片段y {46d3d31#3 id = 0x7f090069}声明的目标片段x {e2c16#0 id = 0x7f090104 android:switcher:2131296516:0}不属于此FragmentManager!

java android android-fragments

9
推荐指数
1
解决办法
7182
查看次数

如何使用新的 Android-X API 从当前的 PreferenceFragment 打开一个新的 PreferenceFragment?

背景

在以前版本的支持库中,我们可以使用标题来拥有一个设置的主菜单屏幕,每个屏幕都会打开一个新的设置屏幕(片段)。

问题

现在标题消失了(如这里所写)一段时间,我认为在 android-x 上情况变得更糟:

你会注意到这里没有的一件事是首选项标题,你是完全正确的。然而,这并不意味着单个偏好列表需要跨越 10 英寸平板电脑屏幕。相反,您的 Activity 可以实现 OnPreferenceStartFragmentCallback ( link ) 以使用 app:fragment 属性或 OnPreferenceStartScreenCallback ( link ) 处理首选项以处理 PreferenceScreen 首选项。这允许您在一个窗格中构造“标题”样式 PreferenceFragmentCompat 并使用这些回调替换第二个窗格,而无需在两种不同类型的 XML 文件中工作。

问题是,我没有在新的 android-x API 上使用这些。

每个片段都有自己的首选项 XML 树(使用setPreferencesFromResourceonCreatePreferences),但我提出的每个解决方案要么什么都不做,要么崩溃。

以直观的方式来说,这就是我想要实现的目标:

在此处输入图片说明

由于有多个子设置屏幕,将所有子设置屏幕的所有首选项都放在主设置屏幕的一个 XML 文件中会非常麻烦。

我试过的

我唯一成功的是使用 PreferenceScreen 来保存应该显示的子屏幕的首选项。

这是此类事情的工作代码(可在此处获得项目):

首选项.xml

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:title="Demo">

    <PreferenceScreen
        android:key="screen_preference" android:summary="Shows another screen of preferences"
        android:title="Screen preferenc">

        <CheckBoxPreference
            android:key="next_screen_checkbox_preference"
            android:summary="Preference that is on the next screen but same hierarchy"
            android:title="Toggle preference"/> …
Run Code Online (Sandbox Code Playgroud)

android android-preferences android-fragments preferencefragment androidx

8
推荐指数
2
解决办法
6841
查看次数