2

アクティビティのサブクラスとして ListFragment クラスがPreferenceActivityあり、5 つの可能なリスト ビューのうち 2 つの並べ替えを変更する設定がありますが、リストビューでアクティビティに戻ると、onCreateLoader再度呼び出されません。したがって、リストは同じままです。

設定値を変更した後、リストを更新するにはどうすればよいですか?

私の例onCreateLoader

if(pref.getString(Preferences.CAL_SORT, "1").equals("1")){
                return new CursorLoader(getActivity(),CalendarEvents.EVENTS_URI,
                        new String[] {CalendarEvents.EVENT_ID,CalendarEvents.EVENT_READ,CalendarEvents.EVENT_SUBJECT,
                            CalendarEvents.EVENT_COMPANY_NAME,CalendarEvents.EVENT_START}
                        ,null,null,CalendarEvents.EVENT_COMPANY_NAME+" COLLATE LOCALIZED ASC," /*+ julianday("*/+CalendarEvents.EVENT_START/* + ")"*/ + " COLLATE LOCALIZED DESC");
            }else{
                return new CursorLoader(getActivity(),CalendarEvents.EVENTS_URI,
                        new String[] {CalendarEvents.EVENT_ID,CalendarEvents.EVENT_READ,CalendarEvents.EVENT_SUBJECT,
                            CalendarEvents.EVENT_COMPANY_NAME,CalendarEvents.EVENT_START}
                        ,null,null,CalendarEvents.EVENT_COMPANY_NAME+" COLLATE LOCALIZED ASC," /*+ julianday("*/+CalendarEvents.EVENT_START/* + ")"*/ + " COLLATE LOCALIZED ASC");
            }

アダプターを呼び出すことができることはわかってnotifyDatasetChange()いますが、アダプターは外部アクティビティからは見えません。私は私の中で何かをするべきですかContentProvider

これが私のクラスの構造です

public class MainActivity extends FragmentActivity {

    public static class ListViews extends ListFragment implements LoaderManager.LoaderCallbacks<Cursor>{
        public Loader<Cursor> onCreateLoader(int arg0,Bundle arg1){
        }
    }

    public void onResume(){
    }
}
4

1 に答える 1

5

getLoaderManager().restartLoader(int, Bundle, LoaderCallbacks)を呼び出す必要があります。で、提供された に基づいてonCreateLoader()新規作成できます。LoaderBundle

http://developer.android.com/reference/android/app/LoaderManager.htmlのサンプルを参照して、フィルターが変更されたときにどのように使用されるかを確認してください。設定の変更を検出するには、SharedPreferences.OnSharedPreferenceChangeListenerを使用できます。

于 2012-08-14T20:28:43.367 に答える