相关疑难解决方法(0)

Android列表首选项:将摘要作为选定值?

我有一个Preference活动,它使用我的XML文件定义的List Preferences.如何将列表活动的摘要设置为所选的值?

谢谢!

java android

108
推荐指数
6
解决办法
4万
查看次数

如何检查Java中的变量类型?

我如何检查以确保我的变量是int,array,double等...?

编辑:例如,我如何检查变量是否为数组?这有什么功能吗?

java

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

如何遍历共享首选项的所有键?

SharedPreferences有方法getAll,但它不返回任何条目,尽管存在一些键:

PreferenceManager.getDefaultSharedPreferences(this).contains("addNewAddress");
Run Code Online (Sandbox Code Playgroud)

返回true

Map<String, ?> keys=PreferenceManager.getDefaultSharedPreferences(this).getAll();
Run Code Online (Sandbox Code Playgroud)

返回空地图

怎么了?如何获取所有共享首选项的列表?

android sharedpreferences

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

将UI首选项"摘要"字段设置为首选项的值

Android新手,我在用户更改首选项时有一些代码我将UI首选项中的"摘要"字段更新为他们输入的值.但是,在创建首选项活动时,我想将"摘要"字段设置为相应首选项中的值.请指教.谢谢.

public class MyPreferenceActivity extends PreferenceActivity implements
        OnSharedPreferenceChangeListener {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preference);
        SharedPreferences sp = getPreferenceScreen().getSharedPreferences();
        sp.registerOnSharedPreferenceChangeListener(this);
    }

    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
            String key) {
        Preference pref = findPreference(key);
        if (pref instanceof EditTextPreference) {
            EditTextPreference etp = (EditTextPreference) pref;
            pref.setSummary(etp.getText());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

android android-preferences

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

当其他首选项被禁用时,如何在我的Android应用程序中启用首选项?

我曾经PreferenceActivity在我的Android应用程序中有偏好.我想要一个偏好说"pref 2"在其他偏好说"pref 1"未被选中时被启用,而"pref 2"在被选中"pref 1"时被禁用.即恰好与android:dependancy属性相反.

我怎样才能做到这一点?

android android-preferences

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

如何在preference.xml窗口中创建RadioButton组?

我是Java Android开发的初学者.我正在使用Eclipse SDK 3.6.1版本.我有一个带有两个复选框和一个后退按钮的首选项窗口.

    <?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
             <PreferenceCategory
             android:title="PIN requirement">                
            <CheckBoxPreference                        
                    android:title="Use PIN" 
                    android:defaultValue="true"                                              
                    android:key="checkboxPref" /> 
           <CheckBoxPreference
                    android:title="Don't use PIN"
                    android:defaultValue="false"                        
                    android:key="checkboxPref2" />

                    </PreferenceCategory>

<PreferenceCategory>
    <Preference
            android:title="Back"                
            android:key="customPref" />
    </PreferenceCategory>
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

如何将两个CheckBox更改为RadioButton组?

xml checkbox android preferences radio-button

18
推荐指数
3
解决办法
4万
查看次数

在摘要中显示EditTextPreference的值

我正在学习如何在Android中开发并想要进行设置活动,

我的设置活动

public class Main extends Activity  {


    protected SettingsFragment settingsFragment;


    @SuppressLint("NewApi")
    @TargetApi(11)
    public class SettingsFragment extends PreferenceFragment implements
            SharedPreferences.OnSharedPreferenceChangeListener {


        @Override
        public void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.preferences);
            setSummaries();


        }


        @Override
        public void onResume() {
            final SharedPreferences sh = getPreferenceManager().getSharedPreferences() ;
            super.onResume();
            sh.registerOnSharedPreferenceChangeListener(this);

        }

        @Override
        public void onPause() {
            final SharedPreferences sh = getPreferenceManager().getSharedPreferences() ;
            super.onPause();
            sh.unregisterOnSharedPreferenceChangeListener(this);
        }

        @SuppressLint("NewApi")
        public void setSummaries(){

           final SharedPreferences sh = getPreferenceManager().getSharedPreferences() ;


            //Pref1
            Preference stylePref = findPreference("editTextPref");
            stylePref.setSummary(sh.getString("editTextPref", ""));

            //here the other preferences.. …
Run Code Online (Sandbox Code Playgroud)

android

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

使用新值更改ListPreference的摘要(Android)

如何将ListPreference的摘要修改为用户选择的新"Entry"字符串(而不是条目值)

我用setOnPreferenceChangeListener()来支持它

new OnPreferenceChangeListener() {

        @Override
        public boolean onPreferenceChange(Preference preference, Object newValue) {
            return true;
        }
    }
Run Code Online (Sandbox Code Playgroud)

using((ListPreference)preference).getEntry()我得到旧值(因为它还没有更改),newValue.toString()返回条目值(不是显示给用户的条目文本)

我该怎么做?提前致谢

java android

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

PreferenceActivity更新摘要

我有一个PreferenceActivity2级树的PreferenceScreens,类似于:

<PreferenceScreen>
  <PreferenceScreen android:key="A">
     <ListPreference/>
     <EditTextPreference/>
  </PreferenceScreen>
  <PreferenceScreen android:key="B">
     <ListPreference/>
     <EditTextPreference/>
  </PreferenceScreen>
  ...
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

每个较低级别的偏好屏幕,例如A和B,正在收集两个相关的数据.我希望这些父项的摘要是两个子首选项的当前值的组合.

我尝试在叶子首选项上添加onPreferenceChangeListener并从那里更新摘要,但似乎没有.首选项都是在活动中以编程方式创建的,所以我在onCreate中做了类似的事情:

   leafListPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
       @Override
       public boolean onPreferenceChange(Preference preference, Object newValue) {
              // do some work
              prefScreenA.setSummary( /* get new summary based on newValue */);
              return true;
       }
  });
Run Code Online (Sandbox Code Playgroud)

然后我试图找到一个位置,我可以通知我已经从子页面返回到顶级首选项屏幕,以便我可以在此时更新.但是,我对如何显示下级屏幕感到困惑.看起来它们实际上是对话框,而不是完整的活动,因为onPause/onResume在它们之间移动时不会被调用.在返回顶级页面时,是否有一些我遗漏的方法会被调用?

我也尝试添加一个sharedPreferenceChangeListener,如所描述这里,但似乎从来没有被调用.

任何人都对我在这里缺少的东西有任何暗示,或者我错过的任何更简单的方法?

android

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

每个设置的OnPreferenceChangeListener

我知道我可以这样做:

Preference pref = findPreference(getString(R.string.pref_vibrate_on_key));
pref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {

        @Override
        public boolean onPreferenceChange(Preference preference,
                Object newValue) {
            LogUtil.d("Working!");
            return true;
        }

});
Run Code Online (Sandbox Code Playgroud)

但我想为每个偏好添加一个Listener.我试过做:

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
sp.registerOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener() {

        @Override
        public void onSharedPreferenceChanged(
                SharedPreferences sharedPreferences, String key) {
            LogUtil.d("working!");

        }

});
Run Code Online (Sandbox Code Playgroud)

但它不起作用.这可能吗?如果是这样,我做错了什么?

android android-preferences

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

单击"确定"按钮时如何更新EditTextPreference现有摘要

我可以使用默认摘要显示EditTextPreference.现在我想更新它,当我在编辑文本框中输入新值并单击确定然后它应该更新摘要的值.但我无法做到这一点.我的代码如下,请在我的代码中更新所需.

public class Prefs extends PreferenceActivity {

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.prefs);

    final EditTextPreference pref = (EditTextPreference)findPreference("username");
    pref.setSummary(pref.getText());
    pref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
      public boolean onPreferenceChange(Preference preference, Object newValue) {
        final EditTextPreference pref = (EditTextPreference)findPreference("username");

        pref.setSummary(pref.getText());

        return true;
      }
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

xml文件是

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
  <EditTextPreference 
    android:title="User Name"
    android:key="username" 
    android:summary="Please provide user name" />
  <EditTextPreference 
    android:title="Password" 
    android:password="true"
    android:key="password" 
    android:summary="Please enter your password" />
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

实际上我的代码更新了以前的输入值作为摘要文本 单击"确定"按钮时如何将文本显示为摘要.谢谢

android

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

设置摘要以描述当前值

当我在用户选择首选项时尝试设置摘要时,通常会保存.但是当我的应用程序重新启动时,摘要就消失了.

这里是我的代码来设置摘要ListPreferenceEditTextPreference:

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key){

    Preference pref = findPreference(key);

    // I feel the problem is happened here
    if (pref instanceof ListPreference) {
        ListPreference listPref = (ListPreference) pref;
        pref.setSummary(listPref.getEntry());
    }
    // Same problem here
    if (pref instanceof EditTextPreference) {
        EditTextPreference editText = (EditTextPreference) pref;
        pref.setSummary(editText.getEntry().toString());
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么不对?

android sharedpreferences

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