- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我需要帮助来解决 PreferenceFragmentCompat 的问题,该问题根本不显示,控制台中没有错误,没有消息,什么也没有,只是一个空白页面。
该 fragment 显示为在抽屉导航中选择元素的结果。这是 Activity XML:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="false">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/list_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_marginBottom="24dp"
android:layout_marginEnd="24dp"
app:elevation="12dp"
app:fabSize="normal"
app:rippleColor="@color/nowControlsNormal"
app:srcCompat="@android:drawable/ic_popup_sync" />
</FrameLayout>
<android.support.design.widget.NavigationView
android:id="@+id/drawer"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/drawer_top"
app:itemIconTint="@color/nowBlack"
app:itemTextColor="@color/nowBlack"
app:menu="@menu/drawer_menu" />
</android.support.v4.widget.DrawerLayout>
这是 Java Activity :
public class HomeActivity extends AppCompatActivity {
SharedPreferences settings;
private DrawerLayout drawerLayout;
private ActionBarDrawerToggle drawerToggle;
NavigationView nav;
TextView drawerUsername;
FloatingActionButton fab;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
settings = getSharedPreferences("NowCLOUD", 0);
setContentView(R.layout.activity_home);
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
nav = (NavigationView) findViewById(R.id.drawer);
fab = (FloatingActionButton) findViewById(R.id.fab);
View headerView = nav.getHeaderView(0);
drawerUsername = (TextView) headerView.findViewById(R.id.drawer_username);
fab.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//TODO: Gestire aggiornamento al click della FAB
}
});
getSupportActionBar().setTitle("Home");
drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.drawer_open, R.string.drawer_close) {
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
}
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
}
};
drawerLayout.setDrawerListener(drawerToggle);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportFragmentManager().beginTransaction()
.add(R.id.list_container, HomeFragment.newInstance())
.commit();
drawerUsername.setText(settings.getString("username", "Error"));
nav.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
menuItem.setChecked(true);
drawerLayout.closeDrawers();
displayView(menuItem.getItemId());
return true;
}
});
}
public void displayView(int viewId) {
Fragment fragment = null;
String title = getString(R.string.app_name);
switch (viewId) {
case R.id.drawer_home:
fragment = HomeFragment.newInstance();
title = "Home";
break;
case R.id.drawer_settings:
fragment = SettingsFragment.newInstance();
title = "Settings";
break;
}
if (fragment != null) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.list_container, fragment)
.commit();
}
// set the toolbar title
if (getSupportActionBar() != null) {
getSupportActionBar().setTitle(title);
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
}
}
这是 fragment 的 XML:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.preference.PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent">
<android.support.v7.preference.PreferenceCategory
android:title="@string/settings_synchronization">
<android.support.v7.preference.SwitchPreferenceCompat
android:key="auto_updates"
android:title="@string/settings_auto_sync" />
</android.support.v7.preference.PreferenceCategory>
</android.support.v7.preference.PreferenceScreen>
这是 fragment 的 Java:
public class SettingsFragment extends PreferenceFragmentCompat {
View rootView;
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.fragment_settings);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
//rootView = inflater.inflate(R.xml.fragment_settings,container,false);
return rootView;
}
@Override
public PreferenceFragmentCompat getCallbackFragment() {
return this;
}
public static SettingsFragment newInstance() {
Bundle args = new Bundle();
SettingsFragment fragment = new SettingsFragment();
fragment.setArguments(args);
return fragment;
}
}
我已经删除了所有对此目的无用的代码。抱歉,代码量很大。
最佳答案
我自己想出来了:
当您使用preferencefragment时,您不能覆盖onCreateView方法,否则您将得到一个空白屏幕。
关于java - PreferenceFragmentCompat 不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44078164/
问题是如何与其他嵌套的 PreferenceFragmentCompat 构建 PreferenceFragmentCompat。 主要 Activity : public class MainAct
我尝试为我的 Android 应用程序创建一个设置 Activity ,但是当我单击应该打开设置 Activity 的按钮时,我收到以下错误,并且我的应用程序返回到我的主要 Activity 。 错误
我正在使用 PreferenceFragmentCompat 创建一个设置屏幕,我想在用户上下滚动时执行一些功能,因此我需要检测用户滚动,我如何才能听到偏好屏幕滚动?下面是我的布局代码
我正在尝试使用 PreferenceFragmentCompat 设置我的 SettingsFragment 但 android studio 给出一个错误,即无法解析符号 PreferenceFra
我创建了一个 PreferenceFragmentCompat 设置,一切正常,但我注意到有些奇怪,当加载首选项屏幕时第一次单击设置按钮,我触摸了一些首选项,但它没有响应我的第一次触摸,但是正常工作后
我正在使用 PreferenceFragmentCompat(来自 'com.android.support:preference-v7:28.0.0-rc02')来创 build 置菜单。 问题是我
我需要帮助来解决 PreferenceFragmentCompat 的问题,该问题根本不显示,控制台中没有错误,没有消息,什么也没有,只是一个空白页面。 该 fragment 显示为在抽屉导航中选择元
我用 ViewPager 创建了一个应用程序。当我进行调试构建并在手机上进行测试时,一切正常。 (不是模拟器)但是当我构建一个发布 .apk 并安装它时,PreferenceFragmentCompa
在我的 Android 应用程序中,我定义了一个非常基本的 PreferenceScreen: 并实现了相应的PreferenceFragmentCompat类: class
我需要为我的 PreferenceFragmentCompat 自定义布局。在 PreferenceFragmentCompat 的文档中看来您可以在 onCreateView() 中膨胀并返回一个
我正在尝试将 EditTextPreference 的值放入摘要中。有人可以告诉我该怎么做吗?我的 OnSharedPreferenceChangeListener 似乎不起作用。 import an
我正在尝试创建一个扩展 AppCompatActivity 并在其中有两个 fragment 的 Activity(一个在另一个之下 - 只需使用 LinearLayout)。我希望第一个 fragm
我用的是androidx。在设置 fragment 中,我想创建“首选项”按钮并单击它们以触发一些单独的事件。 如何在特定首选项上实现点击监听器? 这是我的一些代码: import android.o
我创建了一个具有自定义 ImageView 布局的首选项,如下所示: 我的布局是这样的: 但我不知道如何获取对它的引用。我试图通过这样做将它放在 onCreateView 方法中: @Overr
我正在使用支持库中的 PreferenceFragmentCompat(preference-v14:23.0.1 - 虽然我也尝试过使用 23.1.1)。我将所有偏好设置都放在一个 XML 文件中,
我创建了一个首选项屏幕并在扩展 PreferenceFragmentCompat 的类中进行了膨胀。但是偏好项之间的分隔线没有显示 最佳答案 如果使用 AndroidX,请将以下属性添加到 XML 中
标题说明了一切:如何设置 PreferenceFragmentCompat 的样式。我的 v14/style.xml 是 @style/Widget.EditText.W
我正在使用 PreferenceFragmentCompat,但我认为它的样式不正确。 Preferences 的标题似乎太大了,PreferenceCategory 文本不可读,整个想法似乎不对。
我正在覆盖 v7 支持库中的 PreferenceFragmentCompat 类,以便在我的应用程序中提供设置屏幕。我需要在 PreferenceScreen 中设置项目的文本颜色。 这是我尝试过的
我想覆盖 v14 PreferenceFragmentCompat 使用的 accentColor。 我在我的 Android 应用的外框上使用了粉红色强调色。这在许多情况下都会产生问题,因为它会导致
我是一名优秀的程序员,十分优秀!