데이터를 온라인으로 검색하는 데 사용되는 AsyncTask의 결과에 따라 표시하거나 숨길 수있는 setVisibility()가있는 두 개의 기본보기가있는 조각을 사용하고 있습니다.조각을 올바르게 복원 할 수 없습니다. 회전시보기
private void switchView()
{
Log.d(LOG_TAG, "switchView(): show = " + show);
mListView.setVisibility(show ? View.VISIBLE : View.GONE);
searchView.setVisibility(show ? View.GONE : View.VISIBLE);
mCompanyArrayAdapter.notifyDataSetChanged();
}
AsyncTask를이 완료 될 때 래퍼 클래스에 데이터를 구문 분석하고 이들의 ArrayList를을 만들 수 있도록 내가이 방법을 취하고 : 예를 들어
, 여기에보기 사이를 전환 할 수있는 방법이다 ListView 어댑터에서 사용할 개체. (다른 단편에 사용자 정의 클래스를 전달하는 다른 방법이 있다면 사용하는 것이 가능합니다.)
결과가 async에서 일단 나오면 searchView가 숨겨지고 mListView가 표시됩니다. 그러나 회전시 화면은 mListView 결과를 계속 표시하는 대신 searchView로 돌아갑니다.
10-17 10:29:21.872 6603-6603/nz.co.exium.panther D/DiscoverFragment﹕ onCreateView: savedinstancestate is null = false
10-17 10:29:21.877 6603-6603/nz.co.exium.panther D/AbsListView﹕ Get MotionRecognitionManager
10-17 10:29:21.882 6603-6603/nz.co.exium.panther D/DiscoverFragment﹕ onCreateView: savedinstancestate is null = true
그래서 첫 번째 쇼를 savedInstanceState가 발견된다 :
은 내가, 같은 조각에서 onCreateView를 두 번 호출 (DiscoverFragment)에 믿고 여기에 본 것을 보여줍니다 로그 출력에 의해 혼란 스러워요! = null이며 부울 값을 적절하게 설정하지만 다른 onCreateView()가 호출되면 savedInstanceState는 null이고 다시 false로 설정됩니다. 회전 후 double onCreateView()가 왜 필요합니까?
도움 주셔서 감사합니다.() 내 MainActivity.onCreate에서 :
getFragmentManager().beginTransaction()
.replace(R.id.content_frame, Fragment.instantiate(
getApplicationContext(), mClasses[position]))
.commit();
합니다 (content_frame 위치 == DrawerLayout 위치 항목에 대한 FrameLayout이 사용) MainActivity에 조각을 대체
요청으로코드 :
if (savedInstanceState == null) {
selectItem(0);
} else if (placeID == null || placeID.isEmpty()) {
selectItem(savedInstanceState.getInt(SELECTED_KEY));
} else {
selectItem(2);
}
null이 기본 조각을 설정하면 이미 이전 savedInstanceState에 대한 검사를 수행합니다. BroadcastReceiver의 변수 placeID가 null/empty이면 이전 상태로 복원하십시오. 그렇지 않으면 Notifications 데이터를 표시 할 Fragment로 이동하십시오.
액티비티에 조각을 추가하는 코드를 추가 할 수 있습니까? (XML로 ''이 아닌 프로그래밍 방식으로 추가한다고 가정)? –
ianhanniballake
예, DrawerLayout을 사용하는 selectItem (int position) 메서드는 질문에 추가 한 코드를 사용하여 content_frame의 조각을 전환합니다. – fakataha
그러면 조각의 표시를 위해 액티비티의'onCreate()'에서 어떤 일이 발생합니까? – ianhanniballake