我有一堆(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:摘要更新!可能正在经历与我相同的问题.
任何帮助赞赏.
在我的应用程序中,一些设置可能会在PreferenceActivity未打开时更改,而我遇到的问题addPreferencesFromResource是调用onCreate,所以说,我打开PreferenceActivity,然后从那里转到另一个屏幕,然后执行一些更改设置,然后按后退键返回PreferenceActivity,然后在布局上没有改变某些设置.
那么,如何在不重复布局的情况下调用所有Preferences每次onResume(或onStart())重新加载?
android reload preference preferenceactivity sharedpreferences
我不推荐使用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
如何更改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)
我错过了什么吗?提前致谢.
我想在用户点击它时更改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(),但既不工作和第二导致空指针异常.有什么想法让颜色回来?
我正在创建一个具有首选项活动的应用程序,其中列表首选项条目有问题.这个应用程序在我的模拟器上工作正常,但我在移动设备上测试我的应用程序时显示错误
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
我的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: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) 如果将首选项的可选择性设置为false,您将注意到该项目周围的分隔符将消失.
你知道是否有办法保留这些分隔线?
我查看了ListView API,找不到可以在这里应用的解决方案,因为ListView项目没有可选属性(页眉和页脚除外).
谢谢!
android listview preferenceactivity listpreference android-listview
我想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) android ×10
listview ×2
checkbox ×1
colors ×1
invalidation ×1
java ×1
preference ×1
preferences ×1
reload ×1
resources ×1
xml ×1