标签: preference

当PreferenceScreen中的不同包的targetClass时,ActivityNotFoundException

应用程序的默认包是"example.app".

目标活动的包是"example.app.abc".

在java代码中调用"example.app.abc.TheActivity"的startActivity()就行了,

但在preference.xml上指定它不起作用:

<PreferenceScreen android:key="key"
    android:title="@string/title"
>
    <intent android:action="android.intent.action.MAIN"
        android:targetPackage="example.app.abc"
        android:targetClass="TheActivity"
/>
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

我试过android:targetClass ="example.app.abc.TheActivity",但它也不起作用.

是不是可以优先启动非默认包的活动?

android package preference

15
推荐指数
1
解决办法
3531
查看次数

如何使用复选框创建ListPreference

如何创建一个ListPreferencecheckbox?我知道如何使用ListPreference,但我需要在"重复"首选项的警报应用程序中进行多项选择.

像这个截图:

复选框

checkbox android preference listpreference

14
推荐指数
2
解决办法
1万
查看次数

SharedPreferences不会在PreferenceActivity中保存/加载

编辑: 下面描述的问题是由于一个非常奇怪的设备问题不是由任何编码相关的问题引起的.

我有一个preferenceActivity,其中有很多checkBoxPreferences.checkBoxPreference假设保存默认的共享首选项文件,然后在我打开应用程序时再次调用以更新UI.

这不会像它想象的那样发生.如果我关闭应用程序并将其重新打开,我的值仍然像他们想象的那样,但如果我使用任务管理器来结束应用程序,或者如果我重新启动手机(当应用程序未运行时),则调用defaultValues再次.

所以,我在onResume()中创建了一个SharedPreference来测试它.

SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
Run Code Online (Sandbox Code Playgroud)

然后我检查该共享首选项中是否有密钥.

pref.contains("myCheckBoxPreference");
Run Code Online (Sandbox Code Playgroud)

当我关闭并重新打开它时,它返回true.如果我与任务管理器关闭或关闭和打开电话,则返回false.

所以,我尝试手动设置SharedPreference

SharedPreferences.Editor editor = pref.edit();
editor.putBoolean("myCheckBoxPreference", myCheckBoxPreference.isChecked());
editor.commit();
Run Code Online (Sandbox Code Playgroud)

然后我在checkboxpreference值更改时调用了它.我也尝试在onStop和onPause中调用它.尽管如此,如果我关闭应用程序并将其重新打开,pref.contains将返回true,但如果我重新启动手机并重新打开,则返回false.

所以我尝试使用SharedPreferences文件.

在类声明中:

public static final String PREFS = "prefs";
Run Code Online (Sandbox Code Playgroud)

在onResume()中:

SharedPreferences pref = this.getSharedPreferences(PREFS, 0);
Run Code Online (Sandbox Code Playgroud)

同样的行为,如果我只是关闭应用程序并将其重新打开,pref.contains仍会返回true,但如果我关闭并重新打开手机,则返回false.

然后,我尝试myCheckBoxPreference的键值改变的东西,没有为CheckBoxPreference符合XML密钥,它仍然有同样的效果.

我从手机上卸下了应用程序,然后打开电源并重新打开,然后重新安装,它仍然具有相同的效果.

android taskmanager preference preferenceactivity sharedpreferences

14
推荐指数
2
解决办法
1万
查看次数

Android:如何最大化PreferenceFragment宽度(或摆脱保证金)?

Android设置屏幕截图

FragmentsBC截图

如果您查看Android设置屏幕截图或FragmentsBC屏幕截图,PreferenceFragment中会有保证金.你怎么能摆脱它?

我尝试将PreferenceFragment宽度设置为fill_parent,但没有运气.

android preference

14
推荐指数
3
解决办法
1万
查看次数

Android:如何在偏好中调整边距/填充?

在我要求删除PreferenceActivity/PreferenceFragment的填充之前:

Android:如何最大化PreferenceFragment宽度(或摆脱保证金)?

这次我无法在标题文本之前调整边距/填充.(见下图).

在此输入图像描述

有人有任何想法吗?

android margin preference

14
推荐指数
3
解决办法
2万
查看次数

Visual Studio Code - 可以对“OPEN EDITORS”面板进行排序吗?

有时,当我工作时,我最终会打开几个选项卡。我的问题是,每次我需要切换到另一个文件时,我都需要不断滚动,直到找到所需的文件(这并不总是很容易找到)。

例如,我可能有超过 30 个打开的文件,但我目前只处理 3 - 5 个我不断切换的文件。

这些文件应该放在一起放在顶部(按上次使用/保存的排序),而不是在它们第一次打开的日期。

顶部选项卡也不排序。

Android Studio 在这方面做得更好,所以我认为 Visual Studio Code 可能更喜欢它。

有没有属性可以改变这个?我找不到有关设置的提示。

在此处输入图片说明

settings tabs preference visual-studio-code

13
推荐指数
4
解决办法
4867
查看次数

Android PreferenceScreen标题分为两行

我的PreferenceScreen有很长的标题,特别是在某些语言中.我可以使用以下方法为CheckBoxPreference或ListPreference设置多行标题: Android首选项摘要.如何总结3行?,但如何为PreferenceScreen设置2行标题?我可以改变这里的样式:如何在PreferenceScreen中更改字体大小但这看起来并不完美,并且它与首选项样式(字体,大小......)不一致.

谢谢!

android preference

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

如何隐藏片段中首选项之间的分隔符

我想隐藏片段中的首选项之间的分隔符.代码如下:

1.SettingsActivity.java

public class SettingsActivity extends PreferenceActivity {
    super.onCreate(savedInstanceState);
    SettingsFragment settingsFragement = new SettingsFragment();
    FragmentTransaction transaction = getFragmentManager().beginTransaction();
    transaction.add(android.R.id.content, settingsFragement, "settings");
    transaction.commitAllowingStateLoss();
}
Run Code Online (Sandbox Code Playgroud)

2.SettingsFragment.java

public class SettingsFragment extends PreferenceFragment{
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.settings);
    }
}
Run Code Online (Sandbox Code Playgroud)

3.settings.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceCategory>
        <Preference 
             android:key="preference_a"
             android:title="preferenceA"/>
        <Preference 
             android:key="preference_b"
             android:title="preferenceB"/>
        <ListPreference 
             android:key="list_preference_c"
             android:title="list_preferenceC"/>
    </PreferenceCategory>
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

偏好中有系统默认分隔符.我想隐藏分隔线.

如何隐藏分隔线?非常感谢.


谢谢大家的回答.但是,问题是我无法从活动和片段中获取列表视图.

ListView list = (ListView) findViewById(android.R.id.list);
Run Code Online (Sandbox Code Playgroud)

android fragment preference divider android-fragments

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

自定义PreferenceScreen的布局

我的要求

注意:我需要支持Android API 15及更高版本.

在我的PreferenceFragment中,我正在将PreferenceScreen动态添加到PreferenceCategory.

PreferenceScreen as = mgr.createPreferenceScreen(context);
as.setTitle(name); 
myCategory.addPreference(as);
Run Code Online (Sandbox Code Playgroud)

当设置活动呈现时,这些PreferenceScreens仅在其行的标题中呈现,请参见下图. PreferenceScreen在设置活动中显示

我想自定义此行中显示的内容.理想情况下,我希望在下面有一个摘要标题,标题/摘要左侧的图标和右侧的某些行上的图标.请参阅下面的模型图像.

期望的我的偏好屏幕的渲染

PreferenceScreen.setWidgetLayoutResource(int widgetLayoutResId)

我知道我可以使用"setWidgetLayoutResource"在我的设置活动中使用以下代码在行布局的右侧添加一个图标(以及带有"setSummary"的摘要)

PreferenceScreen as = mgr.createPreferenceScreen(context);
as.setTitle(name); 
as.setSummary(summary);
as.setWidgetLayoutResource(R.layout.as_widget);
myCategory.addPreference(as);
Run Code Online (Sandbox Code Playgroud)

其中"as_widget.xml"是

<?xml version="1.0" encoding="utf-8"?>
<ImageView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_action_favorite"/>
Run Code Online (Sandbox Code Playgroud)

这将产生如下的UI 使用setWidgetLayoutResource进行布局

这让我更接近我想要的但仍然不完全是我想要的(错过了行开头的图标).

PreferenceScreen.setLayoutResource(int layoutResId)

我相信如果我使用它,那么我可以控制整行的渲染.我在stackoverflow上看过这个例子,比如

根据我的理解,您指定的布局文件必须具有以下内容

  • 它的根视图的id为"@android:id/widget_frame"
  • 一个id为android的视图:id ="@ + android:id/title"(这是放置PreferenceScreen.setTitle中指定的字符串的地方)
  • id为android的视图:id ="@ + android:id/summary"(这是放置PreferenceScreen.setSummary中指定的字符串的位置)

然而,当我尝试这样做时,Android Studio突出显示"@ + android:id/summary",错误为"无法解析符号'@ + android:id/summary'.当应用程序运行时,我的行呈现为完全空白.

我的java是

PreferenceScreen as = mgr.createPreferenceScreen(context);
as.setTitle(name); 
as.setSummary(summary);
as.setLayoutResource(R.layout.as_row_layout);
myCategory.addPreference(as);
Run Code Online (Sandbox Code Playgroud)

我的布局是

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/widget_frame"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?android:attr/listPreferredItemHeight"
    android:gravity="center_vertical"
    android:paddingRight="?android:attr/scrollbarSize">

    <ImageView
        android:id="@+id/icon1"
        android:src="@drawable/ic_action_email" …
Run Code Online (Sandbox Code Playgroud)

layout android customizing preference preferencescreen

11
推荐指数
1
解决办法
1万
查看次数

通过终端Mac从Safari中的Apple Events允许JavaScript

我正在写一个do javascript在Safari 中执行的程序.唯一的问题是我试图让应用程序自己允许这样做.我正在尝试找到处理Safari开发人员首选项的文件,以便我可以执行此操作.有没有人知道这可能是什么或如何更改这些设置?

safari macos bash terminal preference

11
推荐指数
1
解决办法
2660
查看次数