Я попытался решить свою проблему, поэтому я изменил так много кода. Я изменяю даже заголовок сообщения.
Я могу успешно изменить цвет изображений в пользовательском интерфейсе. Но после того, как он оставил фрагмент и снова запустить, пользовательский интерфейс не может быть обновлен таким же образом, как раньше. Есть 3 вкладки. Когда нажимается 3 -й панель, загружается фрагмент, включая кнопки. Когда нажат одна из кнопки, загружается другой фрагмент предпочтения.public class SettingsMenuFragment extends SherlockFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Button ICSbutton= (Button) view.findViewById(R.id.CallSearchSettingsButton);
ICSbutton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
clearFragmentStack();
SettingsIncomingSearchFragment removeSISF = (SettingsIncomingSearchFragment) getActivity().getSupportFragmentManager().findFragmentByTag("SISF");
if(removeSISF != null)
{
getActivity().getSupportFragmentManager().beginTransaction().remove(removeSISF).commit() ;
getActivity().getSupportFragmentManager().executePendingTransactions();
}
SettingsIncomingSearchFragment Prefrag = new SettingsIncomingSearchFragment();
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
transaction.replace(android.R.id.content, Prefrag ,"SISF");
transaction.addToBackStack(null);
transaction.commit();
getActivity().getSupportFragmentManager().executePendingTransactions();
}
} );}}
< /code>
А код ниже показывает PreferenceFragment: < /p>
public class SettingsIncomingSearchFragment extends PreferenceListFragment implements SharedPreferences.OnSharedPreferenceChangeListener,PreferenceListFragment.OnPreferenceAttachedListener {
Context ctx ;
public static final String SHARED_PREFS_NAME = "settings";
LinearLayout mainlayout ;
LinearLayout sublayout ;
View view ;
Preference myPref ;
ImageView img ;
SharedPreferences sp ;
@Override
public void onCreate(Bundle icicle) {
ctx = getActivity() ;
super.onCreate(icicle);
addPreferencesFromResource(R.xml.pref_incomingsearchsettings);
myPref = (Preference) findPreference("incomingsearchbackgroundcolor");
setColor() ;
myPref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
HSVColorPickerDialog cpd = new HSVColorPickerDialog( ctx, 0xFF4488CC, new OnColorSelectedListener() {
@Override
public void colorSelected(Integer color)
{
sp.edit().putString("incomingsearchbackgroundcolor", String.valueOf(color)).commit();
}
});
cpd.setTitle( "Pick a color" );
cpd.show();
return true ;
}
});
}
private void setColor() {
// TODO Auto-generated method stub
LayoutInflater inflater = (LayoutInflater)
getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.rectangle_layout, null);
mainlayout = (LinearLayout)view.findViewById(R.id.rectangle_main_layout_ll);
sublayout = (LinearLayout)mainlayout.findViewById(R.id.rectangle_layout_ll);
sp = ctx.getSharedPreferences(SHARED_PREFS_NAME, ctx.MODE_PRIVATE);
String defValue = null ;
defValue = sp.getString("incomingsearchbackgroundcolor", null);
img = (ImageView)sublayout.findViewById(R.id.iv_priority);
img.setBackgroundColor(Integer.parseInt(defValue));
}
@Override
public void onPreferenceAttached(PreferenceScreen root, int xmlId) {
// TODO Auto-generated method stub
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
// TODO Auto-generated method stub
if(key.equals("incomingsearchbackgroundcolor"))
{
sp = ctx.getSharedPreferences(SHARED_PREFS_NAME, ctx.MODE_PRIVATE);
String defValue = null ;
defValue = sp.getString("incomingsearchbackgroundcolor", null);
Log.d("Debug", defValue);
int iColor = Integer.parseInt(defValue);
img.setBackgroundColor(iColor);
img.invalidate();
if(this.isAdded())
{
getActivity().getSupportFragmentManager().beginTransaction().detach(this).commit() ;
getActivity().getSupportFragmentManager().executePendingTransactions();
getActivity().getSupportFragmentManager().beginTransaction().attach(this).commit();
getActivity().getSupportFragmentManager().executePendingTransactions();
}
}
}
@Override
public void onResume()
{
super.onResume();
sp.registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onPause() {
super.onPause();
sp.unregisterOnSharedPreferenceChangeListener(this);
}
< /code>
} < /p>
и это предпочтение xml < /p>
< /code>
< /p>
И это rectangle_layout xml < /p>
< /code>
< /p>
Как я писал предыдущую версию этого поста, код выше успешно работает в первом фрагменте, загруженном фрагментом, цветом фона изображения, обновленный в пользовательском интерфейсе предпочтений. Я пытаюсь написать условие сбоя шаг за шагом: < /p>
1. Я выбираю 3 -й панель из BARBAR Action и фрагмент, загруженный, включая кнопки.
2. Я нажимаю кнопку, которая загружает настройки фрагмента (вы можете увидеть код выше)
3. В этом предпочтении есть предпочтение, включая TextView и ImageView (вы можете увидеть подробности выше)
4. Когда я нажимаю на это предпочтение, забежал цветовой сборщик. (Вы можете увидеть подробности выше)
5. Я выбираю цвет из сборщика цвета и сохраняю его в SharedPreference. (Вы можете увидеть подробности выше)
6. Запускаемое событие OnsharedPreferenceChanged, и я изменяю цвет фона ImageView (вы можете увидеть подробности выше).
7. Я оставляю фрагмент с выбором другой вкладки из панели действий или с помощью кнопки Backpress.
8. Я запускаю тот же фрагмент с нажатием той же кнопки в 3 -й панели.
9. Я снова использую сборщик цвета, и запускается событие OnsharedPreferenceChanged.
10. Я вижу с отладкой, что истинный цветовой код взят из SharedPreerference, и он устанавливается на цвет фона ImageView, а приведенный ниже код:
getActivity (). GetSupportFragmentManager (). BeginTransaction (). DEPACH (this) .commit ();
getActivity () getSupportRagepragepragement. /> getActivity (). getSupportFragmentManager (). beginTransaction (). Прикрепить (this) .commit ();
getActivity (). getSupportFragmentManager (). executingTransTransactions ();
< /p>
11. Но предпочтение не обновляется в это время. Старый цвет или черный вид в ImageView.
Большое спасибо
Подробнее здесь: https://stackoverflow.com/questions/210 ... in-android
Как изменить цвет фона изображений в предпочтении в Android? ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1754087504
Anonymous
Я попытался решить свою проблему, поэтому я изменил так много кода. Я изменяю даже заголовок сообщения.
Я могу успешно изменить цвет изображений в пользовательском интерфейсе. Но после того, как он оставил фрагмент и снова запустить, пользовательский интерфейс не может быть обновлен таким же образом, как раньше. Есть 3 вкладки. Когда нажимается 3 -й панель, загружается фрагмент, включая кнопки. Когда нажат одна из кнопки, загружается другой фрагмент предпочтения.public class SettingsMenuFragment extends SherlockFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Button ICSbutton= (Button) view.findViewById(R.id.CallSearchSettingsButton);
ICSbutton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
clearFragmentStack();
SettingsIncomingSearchFragment removeSISF = (SettingsIncomingSearchFragment) getActivity().getSupportFragmentManager().findFragmentByTag("SISF");
if(removeSISF != null)
{
getActivity().getSupportFragmentManager().beginTransaction().remove(removeSISF).commit() ;
getActivity().getSupportFragmentManager().executePendingTransactions();
}
SettingsIncomingSearchFragment Prefrag = new SettingsIncomingSearchFragment();
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
transaction.replace(android.R.id.content, Prefrag ,"SISF");
transaction.addToBackStack(null);
transaction.commit();
getActivity().getSupportFragmentManager().executePendingTransactions();
}
} );}}
< /code>
А код ниже показывает PreferenceFragment: < /p>
public class SettingsIncomingSearchFragment extends PreferenceListFragment implements SharedPreferences.OnSharedPreferenceChangeListener,PreferenceListFragment.OnPreferenceAttachedListener {
Context ctx ;
public static final String SHARED_PREFS_NAME = "settings";
LinearLayout mainlayout ;
LinearLayout sublayout ;
View view ;
Preference myPref ;
ImageView img ;
SharedPreferences sp ;
@Override
public void onCreate(Bundle icicle) {
ctx = getActivity() ;
super.onCreate(icicle);
addPreferencesFromResource(R.xml.pref_incomingsearchsettings);
myPref = (Preference) findPreference("incomingsearchbackgroundcolor");
setColor() ;
myPref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
HSVColorPickerDialog cpd = new HSVColorPickerDialog( ctx, 0xFF4488CC, new OnColorSelectedListener() {
@Override
public void colorSelected(Integer color)
{
sp.edit().putString("incomingsearchbackgroundcolor", String.valueOf(color)).commit();
}
});
cpd.setTitle( "Pick a color" );
cpd.show();
return true ;
}
});
}
private void setColor() {
// TODO Auto-generated method stub
LayoutInflater inflater = (LayoutInflater)
getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.rectangle_layout, null);
mainlayout = (LinearLayout)view.findViewById(R.id.rectangle_main_layout_ll);
sublayout = (LinearLayout)mainlayout.findViewById(R.id.rectangle_layout_ll);
sp = ctx.getSharedPreferences(SHARED_PREFS_NAME, ctx.MODE_PRIVATE);
String defValue = null ;
defValue = sp.getString("incomingsearchbackgroundcolor", null);
img = (ImageView)sublayout.findViewById(R.id.iv_priority);
img.setBackgroundColor(Integer.parseInt(defValue));
}
@Override
public void onPreferenceAttached(PreferenceScreen root, int xmlId) {
// TODO Auto-generated method stub
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
// TODO Auto-generated method stub
if(key.equals("incomingsearchbackgroundcolor"))
{
sp = ctx.getSharedPreferences(SHARED_PREFS_NAME, ctx.MODE_PRIVATE);
String defValue = null ;
defValue = sp.getString("incomingsearchbackgroundcolor", null);
Log.d("Debug", defValue);
int iColor = Integer.parseInt(defValue);
img.setBackgroundColor(iColor);
img.invalidate();
if(this.isAdded())
{
getActivity().getSupportFragmentManager().beginTransaction().detach(this).commit() ;
getActivity().getSupportFragmentManager().executePendingTransactions();
getActivity().getSupportFragmentManager().beginTransaction().attach(this).commit();
getActivity().getSupportFragmentManager().executePendingTransactions();
}
}
}
@Override
public void onResume()
{
super.onResume();
sp.registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onPause() {
super.onPause();
sp.unregisterOnSharedPreferenceChangeListener(this);
}
< /code>
} < /p>
и это предпочтение xml < /p>
< /code>
< /p>
И это rectangle_layout xml < /p>
< /code>
< /p>
Как я писал предыдущую версию этого поста, код выше успешно работает в первом фрагменте, загруженном фрагментом, цветом фона изображения, обновленный в пользовательском интерфейсе предпочтений. Я пытаюсь написать условие сбоя шаг за шагом: < /p>
1. Я выбираю 3 -й панель из BARBAR Action и фрагмент, загруженный, включая кнопки.
2. Я нажимаю кнопку, которая загружает настройки фрагмента (вы можете увидеть код выше)
3. В этом предпочтении есть предпочтение, включая TextView и ImageView (вы можете увидеть подробности выше)
4. Когда я нажимаю на это предпочтение, забежал цветовой сборщик. (Вы можете увидеть подробности выше)
5. Я выбираю цвет из сборщика цвета и сохраняю его в SharedPreference. (Вы можете увидеть подробности выше)
6. Запускаемое событие OnsharedPreferenceChanged, и я изменяю цвет фона ImageView (вы можете увидеть подробности выше).
7. Я оставляю фрагмент с выбором другой вкладки из панели действий или с помощью кнопки Backpress.
8. Я запускаю тот же фрагмент с нажатием той же кнопки в 3 -й панели.
9. Я снова использую сборщик цвета, и запускается событие OnsharedPreferenceChanged.
10. Я вижу с отладкой, что истинный цветовой код взят из SharedPreerference, и он устанавливается на цвет фона ImageView, а приведенный ниже код:
getActivity (). GetSupportFragmentManager (). BeginTransaction (). DEPACH (this) .commit ();
getActivity () getSupportRagepragepragement. /> getActivity (). getSupportFragmentManager (). beginTransaction (). Прикрепить (this) .commit ();
getActivity (). getSupportFragmentManager (). executingTransTransactions ();
< /p>
11. Но предпочтение не обновляется в это время. Старый цвет или черный вид в ImageView.
Большое спасибо
Подробнее здесь: [url]https://stackoverflow.com/questions/21060798/how-to-change-imageview-background-color-in-a-preference-in-android[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия