때로는 백그라운드에서 응용 프로그램이 죽으면 나는 활동의 현재 조각을 복원하려고 해요. 난 onSaveInstanceState()
에 현재 조각을 저장하려면 putFragment()
을 사용하고 onRestoreInstanceState()
에 getFragment()
을 사용하면 응용 프로그램이 죽기 전에 현재 조각을 저장 한 인스턴스를 가져올 수 있습니다. 이는 호스팅 활동에서 수행됩니다. MainActivity에서조각 두 번 다시
onSaveInstanceState() MainActivity에서
@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
getSupportFragmentManager().putFragment(outState, "fragment", getSupportFragmentManager()
.findFragmentById(R.id.mainfrag));
super.onSaveInstanceState(outState, outPersistentState);
}
onRestoreInstanceState()는() : I 테스트 SubCat()
단편을 사용
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
Fragment current = getSupportFragmentManager().getFragment(savedInstanceState, "fragment");
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
if (current instanceof SubCat) {
current = new SubCat();
}
ft.replace(R.id.mainfrag, current); //error-line (MainActivity.java:185)
ft.addToBackStack(null);
ft.commit();
}
, 단지의 단편 중 하나 애플 리케이션, 그래서 때 SubCat()
조각 전경/시각적으로 나는 의도적으로 배경에 전체 애플 리케이션을 넣어 또는 내가 애플 리케이션을 최소화하고 몇 t 후 ime, 내가 앱으로 돌아 왔을 때 마지막 조각 (이 경우 SubCat()
)이 다시 복원되지만 조각의 일부 인스턴스도 저장해야합니다.
cat_id
의 실제 값이
onActivityCreated()
에 번들에서 검색에서 두 번 다시 작성,하지만 일부는 조각을 다시 재현되어 있으며,이 때
onActivityCreated()
가 호출되지 않습니다 어떻게 가치를 만드는 것입니다
cat_id
null입니다.
조각 : 나는 내가 잘못하고있는 무슨 모르는
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
arr = new ArrayList<>();
if (getArguments() != null) {
String[] data = getArguments().getStringArray("cat_data");
cat_id = data[0];
cat_name = data[1];
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (view == null) {
view = inflater.inflate(R.layout.fragment_sub_category, container, false);
progress = view.findViewById(R.id.progress);
layoutManager = new LinearLayoutManager(getActivity());
recyclerView = view.findViewById(R.id.recycler);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(layoutManager);
subCatAdapter = new SubCatAdapter(arr, getActivity());
recyclerView.setAdapter(subCatAdapter);
subCatAdapter.setOnClickListener(this);
doThis(); //request data from server
}
return view;
}
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putString("cat_id", cat_id);
outState.putString("cat_name", cat_name);
super.onSaveInstanceState(outState);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (savedInstanceState != null) {
cat_id = savedInstanceState.getString("cat_id");
cat_name = savedInstanceState.getString("cat_name");
}
}
가 사전에 감사를 도와주세요.
오류를 공유하십시오. – YoLo
오류가 없습니다. cat_id는 빈 값을 반환하며, 앱이 백그라운드로 이동하기 전에 값을 가지고 있습니다. –