두 개의 탭이있는 ViewPager의 주 활동이 있습니다. 각 탭에는 조각이 있습니다.Fragment의 LoaderManager를 액티비티 호스트에서 다시 시작하는 방법은 무엇입니까?
이러한 조각 중 하나에는 사용자가 RecyclerView에 새 항목을 추가 할 수 있도록 클릭 할 때 DialogFragment를 표시하는 RecyclerView 및 FAB이 포함되어 있습니다.
public class SaveDialogFragment extends DialogFragment {
...
public interface SaveDialogListener {
void onSaveDialogPositiveClick(String str1, String str2);
}
...
}
: 나는 긍정적이고 부정적인 버튼의 콜백에 대한 인터페이스를 선언이 DialogFragment 클래스의 내부
public class MyListFragment extends Fragment
implements LoaderManager.LoaderCallbacks<Cursor> {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_list, container, false);
FloatingActionButton fab = (FloatingActionButton) view.findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DialogFragment dialog = SaveDialogFragment.newInstance();
dialog.show(getFragmentManager(), "SaveDialogFragment");
}
});
mRecyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
...
getLoaderManager().initLoader(0, null, this);
return view;
}
...
}
이 조각은 또한합니다 (RecyclerView 데이터가 커서에 의해 백업됩니다)을 LoaderCallbacks 인터페이스를 구현 SaveDialogFragment.onAttach() 메서드를 사용하여이 Dialog의 호스팅에 대한 참조를 얻으므로 MainActivity (조각이 아닌)에 SaveDialogListener를 구현해야합니다.
요약하면 : Fragment에서 DialogFragment를 시작합니다.이 DialogFragment는 사용자가 새 항목을 추가 할 때 호스팅 활동에 알립니다.
내가 조각의 내부에서 LoaderManager를 사용하고 있다는 사실에 의심의 여지가 있습니다. 조각이 Loader를 초기화하고 재설정 할 책임이 있기 때문입니다. 그러나 onSaveDialogPositiveClick이 호출 될 때 어떻게 Activity가 Fragment의 Loader를 다시 시작할 수 있습니까? 이 시나리오를 처리하는 가장 올바른 방법은 무엇입니까? 사전에
getLoaderManager().restartLoader(0, null, showListFragment);
감사하십시오 ViewPager의 어댑터 이후
은 단지 LoaderManager를 다시 시작 단지의 활동에 조각에 대한 참조를 유지하는 잘못된 것 같습니다 조각에 대한 참조를 보유하고 있습니다.
감사합니다. 완벽하게 작동합니다. – mevqz