actionbarsherlock을 사용하여 조각으로 작업하는 방법을 배우려고합니다. 나는 this tutorial을 따르려고 노력했다. 액션 바의 일부가 아닌 또 다른 단편을 만들려고 할 때까지 모든 것이 작동했습니다. 사용자는 조각 중 하나의 버튼을 클릭 :
그리고 그 조각이 열립니다
내가 뒤로 버튼을 클릭하고 이전 조각으로 돌아가려면. 이것은 내가 그것을 시도하는 방법을합니다 - 가기 backstack이 조각을 추가 :이 단계에서 뒤로 버튼을 클릭하면actionbarsherlock 조각 및 백 스택 관련 문제
public void onClick(View v) {
switch (v.getId()){
case R.id.btn1:
ft.replace(R.id.fragment_container, Fragment_Products);
ft.addToBackStack(null);
ft.commit();
break;
}
}
이 - 작동, 내가 이전의 단편 (카탈로그)로 돌아갑니다. 그러나이 시점에서 예를 들어 "사회"와 같은 다른 탭으로 이동하여 뒤로 버튼을 누르면 다음과 같이 표시됩니다.
두 조각이 서로 겹치고 있습니다. 다른 탭을 계속 클릭하면 더 많은 것을 망칠 수 있습니다 (비디오가 있지만 여기에 비디오를 포함 할 수없는 것 같습니다).
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setTitle("Fragments app");
ActionBar.Tab FragmentSocialTab = actionBar.newTab().setText("Social")
.setIcon(android.R.drawable.star_on);
ActionBar.Tab FragmentWebTab = actionBar.newTab().setText("Web");
ActionBar.Tab FragmentCatalogTab = actionBar.newTab().setText("Catalog");
Fragment Fragment_Social = new Fragment_Social();
Fragment Fragment_Web = new Fragment_Web();
Fragment Fragment_Catalog = new Fragment_Catalog();
FragmentSocialTab.setTabListener(new TabsListener(Fragment_Social));
FragmentWebTab.setTabListener(new TabsListener(Fragment_Web));
FragmentCatalogTab.setTabListener(new TabsListener(Fragment_Catalog));
actionBar.addTab(FragmentCatalogTab);
actionBar.addTab(FragmentWebTab);
actionBar.addTab(FragmentSocialTab);
actionBar.setSelectedNavigationItem(2);
}
그리고 내 탭 리스너의 코드 :
이것은 내 주요 활동의 코드
class TabsListener implements ActionBar.TabListener{
public Fragment fragment;
public TabsListener(Fragment fragment){
this.fragment = fragment;
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
ft.replace(R.id.fragment_container, fragment);
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
}
왜 일어나고 어떻게 고정 할 수있다?
: 나는 당신을 제안
은 자세한 내용은 onTabUnselected
에서 같은 것을 할, 나는이 (당신을 도움이 될 것입니다 샘플 TabListener 코드를 포함) 권장 'R.id.btn1'을 말하는 겁니까? 'fragmentManager.popBackStack()'메소드를 통해 백 스택으로 이동할 수 있습니다. –
아니요, 기기의 실제 버튼 (이 경우에는 에뮬레이터)을 의미합니다. 'R.id.btn1'은 액션 바 탭의 일부가 아닌 새로운 조각을 열어야합니다. – Igal
[this] (https://github.com/JakeWharton/ActionBarSherlock/blob/master/actionbarsherlock-samples/fragments/src/com/actionbarsherlock/sample/fragments/FragmentTabsPager.java)을 살펴보고 휴대용 소형 무선 호출기. 이렇게하면 두드리기가 덜하고 덜 두통이 생깁니다. –