标签: preferenceactivity

从(子)PreferenceScreen返回时更新PreferenceActivity中的现有Preference项

我有一堆(Sub)PreferenceScreens的PreferenceActivity.每个这样的(Sub)PreferenceScreen代表一个帐户并且具有帐户 - 用户名作为其标题.

PreferenceScreen root = mgr.createPreferenceScreen(this);
for (MyAccountClass account : myAccounts) {
    final PreferenceScreen accScreen = mgr.createPreferenceScreen(this);

    accScreen.setTitle(account.getUsername());

    // add Preferences to the accScreen
    // (for instance a "change username"-preference)
    ...

    root.add(accScreen);
}
Run Code Online (Sandbox Code Playgroud)

当用户输入子PreferenceScreen并编辑帐户用户名时,我希望外部PreferenceScreen更新它的相关帐户的PreferenceScreen标题.

我试图添加......

usernamePref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        accScreen.setTitle(newValue.toString());
        return true;
    }
});
Run Code Online (Sandbox Code Playgroud)

...但是accScreen.setTitle似乎对外部PreferenceScreen没有生效.我注意到调用onContentChanged();实际上使它工作,但我意识到这可能不是这样做的首选方式.

我怀疑我应该postInvalidate()在某个地方调用一些视图,但我真的无法弄清楚什么视图以及何时进行操作.

PreferenceScreen android:摘要更新!可能正在经历与我相同的问题.

任何帮助赞赏.

android preferences invalidation preferenceactivity

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

在Resume上的PreferenceActivity中重新加载首选项

在我的应用程序中,一些设置可能会在PreferenceActivity未打开时更改,而我遇到的问题addPreferencesFromResource是调用onCreate,所以说,我打开PreferenceActivity,然后从那里转到另一个屏幕,然后执行一些更改设置,然后按后退键返回PreferenceActivity,然后在布局上没有改变某些设置.

那么,如何在不重复布局的情况下调用所有Preferences每次onResume(或onStart())重新加载?

android reload preference preferenceactivity sharedpreferences

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

preferencefragment找不到id android的视图

我不推荐使用getpreferencescreen,因此我尝试实现标头首选项活动.

这是我的代码:

public class EditPreferences extends PreferenceActivity {
ListPreference m_list_preference_dive_centre_rating;
ListPreference m_list_preference_dive_region_rating;
ListPreference m_list_preference_wreck;
ListPreference m_list_preference_cave;
MultyChoiceListPlugin m_list_preference_marine_life;
ListPreference m_list_preference_region;

Preference m_order_by_name;
SharedPreferences.Editor m_editor;



static Context m_context;
int m_order_type_val = 0;

boolean m_wreck_selected = false;
boolean m_cave_selected = false;
boolean m_marine_life_selected = false;
boolean m_region_selected = false;


int number_click_wreck = 0;
int number_click_cave = 0;
int number_click_marine_life = 0;
int number_click_region = 0;

boolean m_without_guide_selected = false;
boolean m_without_equipment_selected = false;
boolean m_budget_selected = false;

boolean m_region_rating = false;
boolean …
Run Code Online (Sandbox Code Playgroud)

android preferenceactivity android-preferences sharedpreferences

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

Android系统.CheckBoxPreference颜色

如何更改CheckBoxPreference的复选框颜色?我指定主题属性不起作用.我也在清单中设置了主题,但它没有用强调色显示,而是用默认颜色显示.

在此输入图像描述

表现:

<activity android:name=".ui.activities.AppPreferencesActivity"
android:theme="@style/PreferencesTheme"/>
Run Code Online (Sandbox Code Playgroud)

样式:

<style name="PreferencesTheme">
    <item name="colorAccent">#FF4081</item>
</style>
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?提前致谢.

checkbox android colors preferenceactivity

9
推荐指数
3
解决办法
2481
查看次数

ListView项目不会保持"选中"状态

我想在用户点击它时更改listview项的背景.有点像Honeycomb设置页面(虽然我没有处理只是设置所以我没有使用PreferenceActivity)我有这个功能通过资源状态选择器状态选择器工作,除了单击列表视图菜单更改线性的情况列表视图右侧的布局(一种分屏视图).我猜测listview失去焦点所以state_pressed不再是真的.

   <item android:state_pressed="true">
     <shape  >
        <solid android:color="@color/blue1" />
     </shape>
   </item>
Run Code Online (Sandbox Code Playgroud)

在选择另一个列表视图项目之前,是否保持列表视图项目着色的任何提示?谢谢!

编辑:

我能够在setOnItemClickListener中更改背景

view.setBackgroundResource(R.color.red); 
Run Code Online (Sandbox Code Playgroud)

我只需要一次一个选择,从而被点击其他列表项目时,我试图lv.invalidate()lv.getChildAt(0).invalidate(),但既不工作和第二导致空指针异常.有什么想法让颜色回来?

resources android listview preferenceactivity

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

android.widget.ArrayAdapter.createViewFromResource中的NullPointerException

我正在创建一个具有首选项活动的应用程序,其中列表首选项条目有问题.这个应用程序在我的模拟器上工作正常,但我在移动设备上测试我的应用程序时显示错误

FATAL EXCEPTION: main
java.lang.NullPointerException
at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:394)
at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
at android.widget.AbsListView.obtainView(AbsListView.java:2033)
Run Code Online (Sandbox Code Playgroud)

当我在移动设备中单击该列表首选项时,会出现此问题.这是我的代码

prference.xml

<PreferenceScreen
        xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceCategory
            android:title="@string/settings">            
        <ListPreference
                android:key="@string/resolution"
                android:title="@string/imageres"
                android:summary="@string/summaryres"
                android:dialogTitle="@string/resFormat" 
                />
    </PreferenceCategory>
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

settings.java

package com.example;

import android.database.Cursor;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.PreferenceActivity;

public class Settings extends PreferenceActivity {
    private SQLiteoperations SQLiteAdapter;
    DTO get;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        get = (DTO) getIntent().getExtras().get("obj");
        SQLiteAdapter = new SQLiteoperations(this);
        SQLiteAdapter.openToWrite();
        addPreferencesFromResource(R.xml.preferences);
        ListPreference pref = (ListPreference) findPreference("resolution");
        pref.setEntries(getEntries());
        pref.setEntryValues(getEntries());
        System.out.println("after set entries");
        System.out.println(get.getDefaultvalues());
        pref.setDefaultValue(get.getDefaultvalues());

    }
    private CharSequence[] getEntries() …
Run Code Online (Sandbox Code Playgroud)

android preferenceactivity android-preferences android-camera

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

在PreferenceScreen中设置文本的自定义字体

我的PreferenceActivity看起来像:

import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceFragment;
import android.widget.TextView;

public class Settings extends PreferenceActivity {

    @SuppressWarnings("deprecation")
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
            super.onCreate(savedInstanceState);

            //setContentView(R.layout.about);

            Typeface timesFont = Typeface.createFromAsset(getAssets(), "fonts/times.ttf");

            TextView about_txt = (TextView) findViewById(R.id.about_txt);        
            about_txt.setTypeface(timesFont);
            about_txt.setText(R.string.about_txt);


            if (Build.VERSION.SDK_INT<Build.VERSION_CODES.HONEYCOMB)
            {
                addPreferencesFromResource(R.xml.preferences);
            } else {
                // Display the fragment as the main content.
                getFragmentManager().beginTransaction().replace(android.R.id.content,
                        new PrefsFragment()).commit();
            }
    }

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

                // Load the preferences from an XML resource …
Run Code Online (Sandbox Code Playgroud)

android preferenceactivity android-preferences

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

在优先活动中使用findviewbyid

我有一个首选项屏幕,我正在使用该android:layout属性指定布局资源.在首选项活动中,我使用addPreferencesFromResourcefrom onCreate方法来使用/扩充首选项.在布局内部我有很少的文本视图和按钮.

问题是我无法使用findViewById方法找到任何textview,复选框和按钮!findViewById返回的每个结果都为null.

编辑:

我需要将一个监听器附加到复选框.

谁能帮帮我呢?

编辑2:

1)preference_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="33dp"
    android:gravity="center_vertical"
    android:minHeight="33dp"
    android:id="@+id/preference_header_switch_item_responder_layout"
    style="?android:attr/listSeparatorTextViewStyle" >

    <CheckBox
    android:id="@+id/switchWidget"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:clickable="true"
    android:focusable="false"
    android:padding="8dip"
    android:layout_marginRight="14dip" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

2)偏好屏幕

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

    <Preference
        android:defaultValue="false"
        android:key="auto_responder_key"
        android:widgetLayout="@layout/preference_layout"
        android:title="@string/auto_responder">
    </Preference>

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

3)对创建的偏好活动:

编辑3:

@Override
    protected void onCreate(Bundle savedInstanceState)
    {
        if(savedInstanceState != null && savedInstanceState.containsKey(HEADERS_KEY))
        {
            headers = savedInstanceState.getParcelableArrayList(HEADERS_KEY);
        }

        super.onCreate(savedInstanceState);
        applicationContext = getApplicationContext();

        setupSimplePreferencesScreen();
//      setContentView(getListView());
        headerCompound = findViewById(R.id.switchWidget);
        headerCompoundEmail = …
Run Code Online (Sandbox Code Playgroud)

android preferenceactivity android-preferences

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

有没有办法让分隔线围绕一个不可选择的偏好?

如果将首选项可选择性设置为false,您将注意到该项目周围的分隔符将消失.

你知道是否有办法保留这些分隔线?

我查看了ListView API,找不到可以在这里应用的解决方案,因为ListView项目没有可选属性(页眉页脚除外).

谢谢!

android listview preferenceactivity listpreference android-listview

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

如何在Android中使用PreferenceScreen

我想PreferenceScreen用于设置页面,我知道使用EditTextPreferences和使用此文本.但我不知道其他对象,例如:我不知道改变文本颜色ListPreference,或者我不知道显示/隐藏文本CheckBoxPreference.

注意:请不要否定.我在互联网上搜索但找不到合适的主题,所以这是我问的问题.请指导我,而不是给予负面评价!

主要活动代码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_page);

    ///--- Setting Options
    summary_tv = (TextView) findViewById(R.id.main_summary_text);
    preferences = PreferenceManager.getDefaultSharedPreferences(this);
    String colors = "";
    String main_title_text = preferences.getString("setting_title_text", "main_title");
    summary_tv.setText(main_title_text);
    Boolean main_title_show = preferences.getBoolean("setting_title_show", true);
Run Code Online (Sandbox Code Playgroud)

偏好活动代码:

public class SettingPage extends PreferenceActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getFragmentManager().beginTransaction().replace(android.R.id.content, new MyPreferenceFragment()).commit();
    }

    public static class MyPreferenceFragment extends PreferenceFragment
    {
        @Override
        public void onCreate(final Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.setting_prefrences);
        }
    } …
Run Code Online (Sandbox Code Playgroud)

java xml android preferenceactivity android-preferences

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