2015-06-25 2 views
0

В моем основном действии есть несколько фрагментов, один из которых имеет listview или gridview. У меня также есть функция предпочтения, которая настраивает поведение и функции приложения, в частности, отображать ли список или сетку.Как обновить фрагмент из списка предпочтений?

Когда настройка списка/сетки изменяется в активности предпочтений, я хочу отразить это изменение в моем фрагменте (находящемся в основном действии моего приложения). Как мне сделать это из отдельного мероприятия? (в этом случае из предпочтения).

Редактировать - Мне удалось сделать это с помощью onResume() обратного вызова, чтобы проверить, все ли соответствующие предпочтения изменились, и если произошло изменение:

public void onResume() { 
    super.onResume(); 
    SharedPreferences settings = getActivity().getSharedPreferences("settings", 0); 
    boolean layout = settings.getBoolean("layout", false); 
    if (layout == true) { 
     listview.setVisibility(View.VISIBLE); 
     gridview.setVisibility(View.GONE); 
    } else { 
     listview.setVisibility(View.GONE); 
     gridview.setVisibility(View.VISIBLE); 
    } 

} 
+1

use onResume фрагмента для проверки значений предпочтений – tyczj

+0

Надеюсь, эта ссылка может помочь вам http://stackoverflow.com/questions/13596250/how-to-listen-for-preference-changes-within-a- preferencefragment –

ответ

0

Вы можете начать PreferenceActivity, используя startActivityForResult, которые возвращают результат в MainActivity.In onActivityForResult() обновляют представление.

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if(resultCode == RESULT_OK){ 
      //Update the view. 
     } 
}//onActivityResult 
0

вы должны создать interface, прослушивающие действие изменения от привилегированной деятельности, а затем основная деятельность/фрагмент должен реализовать интерфейс выше.

Смежные вопросы