首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

工具栏箭头在NavigationDrawer的PreferenceFragment中不起作用

是因为PreferenceFragment是继承自android.preference.PreferenceFragment的类,而不是继承自android.support.v4.app.Fragment的类。因此,它不会自动处理工具栏箭头的点击事件。

要解决这个问题,可以按照以下步骤进行操作:

  1. 确保你的Activity继承自AppCompatActivity,并且使用了支持库的Toolbar作为工具栏。
  2. 在PreferenceFragment的onCreate方法中,调用setHasOptionsMenu(true)来告诉系统该Fragment拥有自己的选项菜单。
  3. 在Activity的onCreateOptionsMenu方法中,使用MenuInflater将菜单资源文件(例如menu_main.xml)解析为Menu对象,并通过调用menu.findItem(R.id.home)获取到工具栏上的箭头按钮。
  4. 在Activity的onOptionsItemSelected方法中,判断点击的菜单项是否是箭头按钮,并执行相应的操作。例如,可以使用FragmentManager的popBackStack方法来返回上一个Fragment。

以下是示例代码:

代码语言:java
复制
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        // 显示箭头按钮
        ActionBar actionBar = getSupportActionBar();
        if (actionBar != null) {
            actionBar.setDisplayHomeAsUpEnabled(true);
        }

        // 加载PreferenceFragment
        getFragmentManager().beginTransaction()
                .replace(R.id.content_frame, new MyPreferenceFragment())
                .commit();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        if (id == android.R.id.home) {
            // 点击了箭头按钮
            getSupportFragmentManager().popBackStack();
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    public static class MyPreferenceFragment extends PreferenceFragment {

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setHasOptionsMenu(true);
            addPreferencesFromResource(R.xml.preferences);
        }
    }
}

在上述代码中,我们首先在Activity的onCreate方法中设置了Toolbar,并显示了箭头按钮。然后,在PreferenceFragment的onCreate方法中调用setHasOptionsMenu(true)。接下来,在Activity的onCreateOptionsMenu方法中解析菜单资源文件,并获取箭头按钮。最后,在Activity的onOptionsItemSelected方法中判断点击的菜单项是否是箭头按钮,并执行相应的操作。

这样,工具栏箭头就可以在NavigationDrawer的PreferenceFragment中正常起作用了。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Directory Opus 添加自定义工具栏按钮提升效率

Directory Opus 自定义工具栏按钮可以执行非常复杂命令,所以充分利用自定义工具栏按钮功能可以更大程度上提升工作效率。...Directory Opus 工具栏 这是我 Directory Opus 界面(暂时将左侧树关掉了): 下图是我目前添加一些工具栏按钮: 自定义工具栏按钮 自定义方法是,点击顶部 设置...命令编辑器 要定义一个能够极大提升效率按钮,命令编辑器多数框我们都是要使用。 接下来我会通过两个示例来说明如何使用这个命令编辑器。...自定义完按钮之后,不要忘了关闭最开始弹出来“自定义工具栏对话框。...一切皆命令 阅读上面的博客定义完一些自己命令之后,你再观察 Directory Opus 其他工具栏按钮,包括左上角菜单,你会发现其实 Directory Opus 中所有的功能按钮和菜单都是使用相同机制建立起来

82040

【Java AWT 图形界面编程】 Canvas 画布绘制箭头图形 ( 数据准备 | 几个关键计算公式 | 绘制箭头直线和尾翼 )

文章目录 一、 Canvas 画布绘制箭头图形 - 要点分析 1、数据准备 2、绘制直线 3、绘制箭头尾翼 二、代码示例 一、 Canvas 画布绘制箭头图形 - 要点分析 ---- 1、数据准备...绘制箭头时 , 先设置一条直线起始点和终止点 , 箭头绘制该线段上 ; /** * 起始点 X, Y 坐标 * 终止点 X, Y 坐标 */ private...int startX, startY, endX, endY; 为箭头指定一个长度 , 该长度末尾是 箭头终点 , 直线上确定箭头终点 , 该终点延伸出两个尾翼 , 尾翼也指定一个长度 ;..., 确定起始点和终止点 , x , y 轴上差值 ; // 计算起始点和终止点在 x, y 方向差值 int deltaX = endX - startX;...* deltaY); 再后 , 根据比例计算出箭头长度 , 根据该长度 , 确定箭头终点坐标 ; 下图中蓝色箭头 , 就是计算出箭头尾部相对于起始点增量 ; // 设置箭头终点在直线位置

1.5K20
  • reference preparation_Preferences

    在上篇文章我们讲述了Android 5.1 Settings源码解析Android 5.1 Settings模块源码分析_Flying snow-CSDN博客, 其中介绍到AndroidSub...PreferenceFragment简述: 当我们开发Android项目时一般都会用到首选项设置,Android3.0之前我们都使用PreferenceActivity类来进行操作,这些设置习惯会被...PreferenceFragment是直接继承自Fragment,另选项布局xml文件根节点一定是,在这个元素我们可以添加不同Preference,常用Preference...,其中android:entries和android:entryValues需要指定数组作为值, 二者区别在于android:entries值是供用户查看和选择(即展示界面上), 而android...而Intent加载链接、拨打电话、发送短信等等,只要有对应Intent,都可以进行操作。 (3)我们接着往下分析: <!

    90410

    PreferenceActivity_in preference to sth

    A.res目录上右击,弹出快捷菜单上选择new->Android Resource File,然后弹出对话框选择Resource type 为xml,Root element:选择preference-headers...重写PreferenceActivityonBuildHeaders方法并在方法调用loadHeadersFromResource()方法加载布局文件。...PreferenceFragment使用界面布局文件方式是:重写onCreate(Bundle savedInstanceState) 并在方法调用addPreferenceFromResource...A.res目录上右击,弹出快捷菜单上选择new->Android Resource File,然后弹出对话框选择Resource type 为xml,Root element:选择PreferenceScreen...重写PreferenceFragmentonCreate方法并在方法调用addPreferenceFromResource()方法加载布局文件 代码如下: package com.example.filedemo

    30810

    preference 意思_Preferences

    提要:PreferenceFragment展示设置值可以通过PreferenceManager.getDefaultSharedPreferences(context).来实现 【正文】 一、PreferenceFragment...PreferenceActivity继承关系图:(不推荐使用) PreferenceFragment继承关系图:(推荐使用) 二、XML文件Preference种类: 根节点中一定是<PreferenceScreen...,既然PrefFragment要加载选项设置布局文件R.xml.preferences,那我们就来定义一下这个preferences.xml: res目录下新建立一个xml目录,该目录中新建文件preferences.xml..."); 文本内容如下: 我们现在在CheckBoxPreference打钩,然后EditTextPreference输入内容: 文本内容显示如下: 2、显示子屏幕subscreens方式进行分组...展现用户选择列表每个元素选择后,需要存储到手机,这里entryValues就是列表各个元素被选择后存储到手机值(通过sharedPreferences保存在/data/data/<packagename

    71710

    Android preference_android studio preview

    大家好,又见面了,我是你们朋友全栈君。 以前我们经常使用PreferenceActivity来显示给用户一个选项设置界面,而现在Google推荐用PreferenceFragment来代替使用..../> 这里有两个属性,android:entries=”@array/department”及android:entryValues=”@array/department_value” 分别表示:列表显数组..., Toast.LENGTH_SHORT).show(); // } // } return false; } } 这里我们PreferenceFragment已经配置好了 因为是Fragment...layout_width="match_parent" android:layout_height="match_parent" > 此Activity就是承载我们PreferenceFragment...容器,非常简单.同时AndroidManifest.xml中将DialogActivity主题设置为Dialog,以防占据整个屏幕: AndroidManifest.xml: <?

    52010

    【Android】PreferenceFragment「建议收藏」

    大家好,又见面了,我是你们朋友全栈君。 调用PreferenceFragment类出错,用了我三天时间才搞定,查官方文档,看百度 最后在这位大佬帖子帮助下终于搞定了。...developer.android.com/reference/android/support/v7/preference/PreferenceFragmentCompat.html 这里会指明添加gradel依赖项 gradel.builder...import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.preference.PreferenceFragment...; /*主类打开layout布局,其中layout会以class方式调用下面的类并打开其引用xml块*/ public class MainActivity extends AppCompatActivity...super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } /*主类添加一个静态类继承

    1.1K40

    使用工具栏控件下拉按钮

    ---- 前言 `提示:这里可以添加本文 ---- 提示:以下是本篇文章正文内容,下面案例可供参考 一、一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 一、使用工具栏控件下拉按钮 示例:...项目 8 个参与者 除了标准推送按钮外,工具栏还可以有下拉按钮。 下拉按钮通常由附加向下箭头表示。...备注 仅当设置了 TBSTYLE_EX_DRAWDDARROWS 扩展样式时,才会显示附加向下箭头。...当用户单击此箭头时(或如果没有箭头,单机按钮本身时),会向工具栏控件父级发送 TBN_DROPDOWN 通知消息。...ON_NOTIFY(TBN_DROPDOWN, IDC_TOOLBAR1, &CMyDialog::OnTbnDropDownToolBar1) 4 新处理程序,显示相应弹出菜单。

    25340

    18个您想了解微小但有用macOS功能

    您可以将工具栏设置为仅显示文本,或者同时显示图标和文本来显示快捷方式,以使视觉清晰。右键单击工具栏以显示这些选项。 想要更好选择吗?使用自定义图标添加到工具栏文件和文件夹。...现在,您可以使用该快捷方式加载加了书签网页。 您将需要注意这一点:选择地址栏后,书签快捷方式将不起作用。单击屏幕上其他位置以取消焦点在地址栏。...11.快速添加口音 要在简历输入é还是绉纸输入ê ?您无需调出带有重音符号键盘快捷键或从网络上复制这些字符。按住E键,您将在此处看到与其关联所有变音符号。...13.快速查看随机图像之间跳转 使用“快速查看”预览多张图像时,可以使用左右箭头键逐一浏览。您也可以单击“播放”按钮以幻灯片形式查看它们。众所周知,您可以使用“索引表”功能随意跳转到图像。...您知道当您将鼠标悬停在电子邮件网页链接上时会显示向下箭头吗?那是预览按钮。 单击该按钮可以弹出窗口中显示链接页面。

    6.1K30

    jquery mobile 移动web(2)

    提供了18常用图标 data-icon =""     1.arrow-1左箭头     2.arrow-r 右箭头     3.arrow-u 上箭头     4...并在改样式把图标设置为背景。     ...footer 工具栏和header工具栏布局上有一些区别。footer工具栏添加按钮会自动给哦设置成inline 模式,并自动适应文本内容宽度。   ...实现一组按钮方法 最外层设置一个div 设置data-role 属性值为controlgroup 然后设置data-type 属性值为 horizontal,说明该按钮时水平排列。   ...全屏模式工具栏     页面视图内header 或footer 区域设置为 data-position 属性值为fixed,然后页面或视图div 元素上设置data-fullscreen 属性为

    1.4K50

    安卓 topic-UI-设置 settings

    Preference 对象是单个设置构建基块。每个 Preference 均作为项目显示列表,并提供适当 UI 供用户修改设置。... 元素内添加每个子项均将作为单独项目显示设置列表。 例如: <?xml version="1.0" encoding="utf-8"?...但是,您必须存储对侦听器强引用,否则它将很容易被当作垃圾回收。 我们建议您将对侦听器引用保存在只要您需要侦听器就会存在对象实例数据。 例如,以下代码,调用方未保留对侦听器引用。...为用户提供这些控件后,即使数据使用量接近他们系统“设置”设置限制,他们也不大可能禁止您应用访问数据,因为他们可以精确地控制应用使用数据量。... PreferenceActivity 添加必要首选项来控制应用数据使用习惯后,您应立即在清单文件为 ACTION_MANAGE_NETWORK_USAGE 添加 Intent 过滤器。

    3.1K10

    干货 | AnyLogic建模仿真介绍+武汉疫情案例实战

    把鼠标放在左侧,我们可以看到系统动力学选项,点一下就可以看见系统动力学工具栏。...用鼠标点击存量右侧窗口我们可以看到赋值处。依次填入我们初始值。 ? 对于参数,我们需要点击前面的那个点,点击后面的文字是不起作用,需要点击前面的点,记住奥。同样填入初始值。 ?...双击从一个存量中间点拉到另外一个存量中间点,我们就可以看到生成了一个箭头。 我们是可以对箭头进行命名,先点击箭头,然后就可以命名了。 ?...在这里我们介绍一下流量意思,就是类似于一个管道,把一个存量东西按照一定规则转移到另外一个存量中去。 我们点击箭头,可以出现以下界面。 ?...但是呢,我们可能觉得这个还不是很酷炫,我们还可以加一些数据分析东西进去。 回到我们主程序,选择工具栏分析。 ?

    6.8K20

    Visual Studio 调试系列7 查看变量占用内存(使用内存窗口)

    “ 地址”字段接受字母数字地址和计算地址表达式,例如。e.User.NonroamableId 要强制立即重新评估“ 地址”字段表达式,请选择“ 自动重新评估自动”图标的圆角箭头。...要在“地址”字段输入内存位置,请移至内存位置: “ 地址”字段中键入或粘贴地址或表达式,然后按Enter键,或从“ 地址”字段下拉列表中选择它。“ 内存”窗口调整为顶部显示该地址。 ?...您可以隐藏或显示“ 内存”窗口顶部工具栏。隐藏工具栏时,您将无法访问“ 地址”字段或其他工具。 要切换工具栏显示: “ 内存”窗口中单击鼠标右键,然后在上下文菜单中选择“ 显示工具栏 ”。...工具栏显示或消失,具体取决于其先前状态。 ? 04 跟踪内存指针 本机代码应用程序,您可以将注册名称用作实时表达式。例如,您可以使用堆栈指针跟随堆栈。...要通过内存跟踪指针: “ 内存窗口地址”字段,输入当前范围内指针表达式。根据语言不同,您可能需要取消引用它。 按Enter键。

    5.7K40
    领券