2014-04-24 2 views
0

자, 내 문제는 3 가지입니다. [1], [2], [3]이라고 부릅니다.안드로이드 조각 네비게이션, 원형 경로

[1]> [2]> [3]> (백 키)> 어떤 이유 [1]

이 유일한 작품 : 여기에

내가 그들을 따라 할 경로입니다 한 라운드에서 2 라운드를하려고하면 다음과 같이 진행됩니다.

[1]> [2]> [3]> (back 키)> [3]> (백키)> Exit

즉, 두 번째로 [3]에 도달하여 뒤로 버튼을 누르면 아무 일도 일어나지 않습니다. 다시 누르면 앱이 Android로 종료됩니다. ([1]로 되돌아 가지 않음)

저는 이것이 addToBackSack 메소드와 관련이 있다고 확신합니다. 그러나 꽤 손가락에 넣을 수는 없습니다.

여기

[A]

public void onClick(View v) { 

     Fragment fragment = new [B]Fragment(); 
     FragmentManager fm = this.getActivity().getFragmentManager(); 

     FragmentTransaction transaction = fm.beginTransaction(); 


     transaction.replace(R.id.container, fragment); 
     transaction.addToBackStack(null); 
     transaction.commit(); 
     break; 

    } 

[B]

public void onItemClick(AdapterView<?> parent, View view, int position, 
     long id) { 

    Fragment fragment = new [C]Fragment(); 
    FragmentManager fm = this.getActivity().getFragmentManager(); 

    FragmentTransaction transaction = fm.beginTransaction(); 

    transaction.replace(R.id.container, fragment); 

    transaction.commit(); 

} 

나는에 addToBackStack를 사용하지 않는 [B]를 내가 원하는하지 않기 때문에 안드로이드 기억하는 내 코드입니다 이 거래, 맞지?

감사합니다.

+0

일반적으로'Fragments'를 사용하여 탐색 계층 구조를 작성하는 것은 매우 까다로울 수 있으며 설명 된 것과 같은 문제가 자주 발생합니다. 'Activities' 만 사용하여 앱에 탐색 계층 구조를 만들고'Fragments'를 사용하여 해당 'Activities'에 내용을 표시하는 것을 고려하십시오. –

+0

@XaverKapeller는 OP의 질문에서 "조각"을 "활동"으로 대체 한 다음 "조언"이 문제를 어떻게 해결하는지 알려줍니다. –

+0

문제는 새 ADT 플러그인은 가능한 한 언제든지 조각을 사용하도록 권장합니다 (실제로 시도해보십시오. 기본적으로 조각이있는 활동을 만듭니다). 내 응용 프로그램의 다른 부분을 분리하는 활동을 사용하고 있습니다. 로그인 | MAIN | 설정. 그러나 그 부분들 안에서 나는 단편들을 사용합니다. 네비게이션을 올바르게 얻을 수있는 방법이 있어야합니다! – feresr

답변

1

대답을 찾았 어!.

public void onItemClick(AdapterView<?> parent, View view, int position, 
     long id) { 
    Toast.makeText(this.getActivity(), "New order created", 
      Toast.LENGTH_SHORT).show(); 
    Fragment fragment = new OrderFragment(); 
    FragmentManager fm = this.getActivity().getFragmentManager(); 
    fm.popBackStack(); 
    FragmentTransaction transaction = fm.beginTransaction(); 
    transaction.addToBackStack(null); 
    transaction.replace(R.id.container, fragment); 
    transaction.commit(); 

} 

popBackStack() 함수가 트릭을 수행했습니다! :) 아직 어떻게 작동하는지 모르겠습니다. 하지만 그렇습니다!

관련 문제