2012-08-04 3 views
7

내 주요 활동에는 NAVIGATION_MODE_TABS 인 액션 바가 있습니다. 각 탭의 내용은 listfragment입니다.조각 거래, 작업 표시 줄 및 백 스택

listitem을 클릭하면 새로운 조각이 표시되고 작업 표시 줄 모드가 NAVIGATION_MODE_STANDARD (이제 탭이 숨겨 짐)으로 변경됩니다. listitemclick 방법에

:

나는이 다음 코드로 작동하도록 관리했습니다 내가 다시 버튼을 누르면

 ActionBar actionBar = getActivity().getActionBar(); 
     actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 

     Fragment albumListFragment = new AlbumListFragment(); 
     albumListFragment.setArguments(bundle); 
     FragmentTransaction ft = getFragmentManager().beginTransaction(); 

     ft.replace(android.R.id.content, albumListFragment); 
     ft.addToBackStack(null); 

     // Commit the transaction 
     ft.commit(); 

     Log.i("FragmentList", "Item clicked: " + id); 

문제는, 탭이 여전히 사라, 이전 단편은 다시 볼 수 없습니다.

내가 뭔가 잘못하고 있습니다. 조각 백스탭과 관련이 있습니까? 나는 다른 방법으로 그것에 가야합니까, 아니면 뒤판을 무시할 수 있습니까? 명확성을 위해

--Edit--

- 나는 fragmenttransaction.replace를 호출 할 때 내가 addToBackStack를 호출하고,하지만 난 뒤로 버튼을 누르면 이전 조각이 복원되지 않습니다.

+0

한 번 확인하십시오. http://www.vogella.com/articles/Android/article.html#fragments_tutorial – shassss

+0

감사하지만이 질문에 특히 도움이되지는 않습니다. –

+0

addToBackStack을 사용하면 원하는 것이 있습니다. ft.addToBackStack (null); 대신에 http://developer.android.com/guide/components/fragments.html#Transactions – Frohnzie

답변

-1

백 스택은 현재 활동을 끝내고 이전 조각으로 이동하지 않고 이전 활동으로 이동합니다. (뒷받침 가이드 : http://developer.android.com/guide/components/tasks-and-back-stack.html 참조).

당신이 제안한 것처럼 onBackPressed를 재정 의하여 동작을 강요 할 수는 있지만 그런 방식으로 자연스러운 Android 동작을 변경한다는 것을 모릅니다. 이와 유사한 기능을하는 다른 앱, 특히 핵심 앱을 살펴보면 뒤로 버튼은 이전 조각으로 이동하지 않고 이전 활동으로 이동합니다.

또한 "위로"버튼 (왼쪽 화살표가있는 작업 표시 줄의 앱 아이콘)의 동작을 완벽하게 제어 할 수 있습니다. ActionBar 가이드에 설명 된대로 단추로 사용하도록 프로그래밍 방식으로 설정해야합니다 (이 작업을 수행하는 방법에 대해 알고 싶다면 알려주십시오). 그러면 스택에서 이전 조각을 설정할 수 있습니다. 어딘가에 유지하십시오.

+0

문서에서 : 그러나 commit()을 호출하기 전에 addToBackStack()을 호출하여 조각 트랜잭션의 백 스택에 트랜잭션을 추가 할 수 있습니다. 이 백 스택은 액티비티에 의해 관리되며 사용자는 뒤로 버튼을 눌러 이전 조각 상태로 돌아갈 수 있습니다. – Frohnzie

+0

@Frohnzie 그 덕분에,하지만 문제는 내가 addToBAckStack()를 사용하고 있으며 내가 다시 누르면 이전 조각을 복원하지 않습니다 .. –

+0

@ rascuache 코드가 올바르게 보인다. 나는 똑같은 일을했다. 문제가 무엇인지 잘 모르겠습니다. addToBackStack을 사용하는 것이 옳습니다. 어쩌면 더 많은 코드를 게시 할 수 있습니다. – Frohnzie

0

정확하게 똑같은 문제가 발생했으며 NAVIGATION_MODE_STANDARD로 ActionBar를 다시 설정할 때만 문제가 발생한다는 것을 알았습니다.

나를위한 유일한 해결책은 NAVIGATION_MODE_STANDARD가있는 도우미 활동에 탭이없는 새 조각을 배치하는 것이 었습니다. 그런 다음 Android에서 제공하는 뒤로 버튼 기능을 사용하여 NAVIGATION_MODE_TABS의 활동으로 돌아가서 상태를 유지할 수 있습니다.

1

어쩌면 조금 늦었지만 몇 시간 동안 문제를 재구성하려고했지만 성공하지 못했습니다. 귀하의 질문에 설명 된 방법 (예 : ft.replace (android.R.id.content, albumListFragment);)에 따라 ActionBar Tab에서 호스팅되는 프래그먼트의 목록보기에서 다른보기로 전환하려고 시도했지만 효과가 없습니다. 일부 구글과 stackoverflow 후, 나는성공적으로 탭 내에서 조각을 전환하는 데 사용하는 것처럼 아무런 문제없이.

"동작 표시 줄이 올바르게 표시되지 않음"문제은 아마도 android developer guide에 설명 된 바와 같이 백 스택 복귀 및 UI 변경으로 인한 것일 수 있습니다. onBackStackChanged() 콜백을 재정의하고 UI를 재구성하려고 할 수 있습니다.

"백 스택으로 이전 조각을 다시 가져 오지 못함"문제 문제를 해결하기 위해 다른 사용자가 문제를 재구성 할 수 있도록 약간의 코드를 게시 할 수 있습니다.

유용한 정보