标签: android-preferences

从xml开始意图

我正在尝试让我的首选项可以选择进入系统Wi-Fi设置.

<PreferenceScreen
    android:title="Wifi">
    <intent android:action="android.settings.MAIN"/>
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

这会弹出一个菜单,我可以在其中选择一系列活动,wi-fi设置就是其中之一.使用logcat,我能够看到

act=android.intent.action.MAIN 
cmp=com.android.settings/.wifi.WifiSettings
Run Code Online (Sandbox Code Playgroud)

我怎么称呼这个?android文档不是很清楚.我在参考中找到了ACTION_WIFI_SETTINGS,但我无法弄清楚如何直接从意图中调用它.

谢谢

编辑:我试过android:component,但显然不存在

xml android android-preferences android-intent

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

如何在EditTextPreference对话框中输入键

我给了android:singleLine="true"选项EditTextPreference,当对话框中的编辑框有焦点时,软件键盘显示"完成"按钮代替Enter键.但是,如果我按下完成按钮,只有软键盘关闭,我仍然需要单击对话框上的完成按钮.

无论如何在软件键盘上输入key和ime动作键来关闭对话框并应用新值?

android preferenceactivity android-preferences

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

从帐户身份验证器accountPreferences屏幕启动Intent?

我已在我的应用程序中包含AccountManager代码,以使用户能够在其"设置"应用程序中创建和管理其帐户.

我在帐户验证器定义中的"accountPreferences"首选项文件中进行了链接,并且选项在"设置">"帐户">"我的应用程序"屏幕中正确显示.当我点击其中一个,而不是获取我链接的活动时,我得到:

01-14 14:47:27.304: ERROR/AndroidRuntime(27708): FATAL EXCEPTION: main
    android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
    at android.app.ContextImpl.startActivity(ContextImpl.java:944)
    at android.app.ContextImpl.startActivity(ContextImpl.java:931)
    at android.preference.Preference.performClick(Preference.java:967)
    at android.preference.PreferenceScreen.onItemClick(PreferenceScreen.java:215)
Run Code Online (Sandbox Code Playgroud)

我在PreferenceScreen中的意图定义为:

<intent
    android:action="android.intent.action.VIEW"
    android:targetPackage="com.myapp.android"
    android:targetClass="com.myapp.android.activities.AccountForwardingActivity"/>
Run Code Online (Sandbox Code Playgroud)

并且目标活动也按照您的预期定义,除了intent-filter之外没有特殊标志来匹配该操作(我还列出了其他自定义操作).

<activity android:name=".activities.AccountForwardingActivity"
    android:theme="@style/Theme.MyApp"
    android:launchMode="singleTask">
    <intent-filter>
        <action android:name="com.myapp.android.PAYMENT_TYPES"/>
        <action android:name="com.myapp.android.ADDRESS_LIST"/>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?如何将从Settings.apk启动的此意图标记为新任务?

settings preferenceactivity android-preferences accountmanager

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

Android preference-headers额外参数

我正在使用标头构建首选项活动.在文档中,我看到extra可以为每个header条目指定参数.在代码中,我想在设置活动中构建标题列表时访问这些额外的值,如下所示.请注意,我是从重载onBuildHeaders而不是标题片段的活动中完成的.

if (header.extras != null && header.extras.containsKey("someKey")) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

但是,extras参数始终为null.有没有办法强制它被读入?

xml android preferenceactivity android-preferences

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

如何在 SeekBarPreference 中显示值

如何使用 a 显示搜索栏值SeekBarPreference

<PreferenceCategory 
     android:title="Delay between change image">

     <SeekBarPreference
         android:id="@+id/preference_delay_seek_bar"
         android:title="Value"
         android:defaultValue="1"
         android:max="60"/>

</PreferenceCategory>
Run Code Online (Sandbox Code Playgroud)

android android-preferences android-holo-everywhere

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

在Android中更改首选项后调用方法

我有这样的喜好:

settings.xml中:

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

    <PreferenceCategory android:title="@string/sectionOneTitle" >
        <EditTextPreference
                android:title="@string/setModuleName"
                android:summary="@string/setModuleNameSum"
                android:key="moduleID"/>
    </PreferenceCategory>

    <PreferenceCategory android:title="@string/sectionTwoTitle" >
        <EditTextPreference
                android:title="@string/setPhoneNumber"
                android:summary="@string/setPhoneNumberSum"
                android:key="phoneNumber"/>
    </PreferenceCategory>

    <PreferenceCategory android:title="@string/sectionThreeTitle" >
        <CheckBoxPreference android:title="@string/setSmsSend"
            android:key="setSmsSend" android:summary="@string/setSmsSendSum" />
    </PreferenceCategory>

</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

设置活动

public class SettingsActivity extends PreferenceActivity {
    @SuppressWarnings("deprecation")
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.settings);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我需要在设置或取消设置复选框时调用我的MAINActivity中的方法.这可能吗?

谢谢

android android-preferences

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

为什么PreferenceCategory的标题和复选框颜色如此之浅以及如何更改它?

我正在开发一个材料设计应用程序,我已经为"设置"选项声明了一个xml文件.我已成功完成此任务,但在运行并打开菜单中的SettingsActivity后,它显示如下:

在此输入图像描述

这里的问题是"通知"和checkBox的颜色标题非常轻,使得它们很难被看到.

这是SettingsActivity.java文件的代码:

public class SettingsActivity extends AppCompatActivity {

    Toolbar toolbar;

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

        SpannableString s = new SpannableString("Settings");
        s.setSpan(new TypefaceSpan(this, "Roboto-Medium.ttf"), 0, s.length(),
                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

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

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setTitle(s);

        // Display the fragment as the main content.
        getFragmentManager().beginTransaction()
                .replace(R.id.fragment_container, new SettingsFragment())
                .commit();

    }

    public static class SettingsFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener {

        public static final String SHARE_APP_PREFERENCE_KEY = "pref_key_share_app";

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            // Load the …
Run Code Online (Sandbox Code Playgroud)

java android android-preferences android-xml

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

使用PreferenceFragment构建的"设置"页面中的工具栏

我使用指南为我的应用程序构建了一个"设置"活动/屏幕.示例代码如下.我错过了能够在这个新活动中添加工具栏并在其左侧放置一个后退箭头?

AndroidManifest.xml中

....
<activity
    android:name=".SettingsActivity"
    android:label="Settings"
    android:launchMode="singleTask"
    android:theme="@style/AppTheme.NoActionBar"/>
....
Run Code Online (Sandbox Code Playgroud)

的preferences.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference
    android:key="pref_sync"
    android:title="@string/pref_sync"
    android:summary="@string/pref_sync_summ"
    android:defaultValue="true" />
<ListPreference
    android:dependency="pref_sync"
    android:key="pref_syncConnectionType"
    android:title="@string/pref_syncConnectionType"
    android:dialogTitle="@string/pref_syncConnectionType"
    android:entries="@array/pref_syncConnectionTypes_entries"
    android:entryValues="@array/pref_syncConnectionTypes_values"
    android:defaultValue="@string/pref_syncConnectionTypes_default" />
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

SettingsFragment.java

public static class SettingsFragment extends PreferenceFragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Load the preferences from an XML resource
        addPreferencesFromResource(R.xml.preferences);
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

SettingsActivity.java

public class SettingsActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Display the fragment as the …
Run Code Online (Sandbox Code Playgroud)

settings user-interface android android-preferences

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

无法从MainActivity解析findPreference()?

当我尝试在MainActivity中初始化一个监听器时,我得到一个编译器错误无法解析方法findPreferenceOnSharedPreferencesChanged.根据这里的答案:

应该从实现PreferenceActivity接口的类中调用findPreference()

但我不明白这样做的代码是什么.如何摆脱编译器错误并成功设置侦听器以进行首选项更改?

MainActivity.java

 public class MainActivity extends FragmentActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
        private SharedPreferences.OnSharedPreferenceChangeListener listener;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            ...
            //Test preference menu
            listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
                public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
                    if (key.equals("pref_wood")) {
                        Preference woodPref = findPreference(key);  //COMPILER ERROR HERE
                        MainActivity.getGLSurfaceView().setTexture("");
                        // Set summary to be the user-description for the selected value
                        woodPref.setSummary(sharedPreferences.getString(key, ""));
                    }
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

android android-preferences android-sharedpreferences

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

将 PreferenceCategory 动态添加到 PreferenceScreen 时出错

我目前计划在我的应用中实施动态通知设置。如果当前设备运行的是 Android Oreo,则显示通知渠道设置。如果不是 Android Oreo,则显示另一个设置 ( PreferenceCategory)

这是我的代码片段,用于在设备版本不是 Oreo 时显示:

for (MyNotificationChannel notificationChannel : notificationChannels) {
    System.out.println("Notification channel created at index " + notificationChannel.getIndex());
    PreferenceCategory preferenceCategory = new PreferenceCategory(preferenceScreen.getContext());
    preferenceCategory.setTitle(notificationChannel.getNotificationTitle());
    preferenceCategory.setSummary(notificationChannel.getNotificationDesc());
    SwitchPreference enableNotificationPreference = new SwitchPreference(preferenceScreen.getContext());
    enableNotificationPreference.setDefaultValue(true);
    enableNotificationPreference.setTitle("Enable notification channel");
    enableNotificationPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
        @Override
        public boolean onPreferenceChange(Preference preference, Object newValue) {
            System.out.println("Preference change: " + newValue);
            return true;
        }
    });
    preferenceCategory.addPreference(enableNotificationPreference);
    SwitchPreference enableVibratePreference = new SwitchPreference(preferenceScreen.getContext());
    enableVibratePreference.setTitle("Vibrate");
    enableVibratePreference.setSummary("Whether to vibrate when there are notifications available");
    enableVibratePreference.setDefaultValue(true);
    enableVibratePreference.setIcon(R.drawable.ic_vibrate_white_24dp);
    enableVibratePreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() …
Run Code Online (Sandbox Code Playgroud)

android android-preferences

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