2017-11-30 9 views
-4

fragment A에 의해 배치 된 activtity을 사용하고 있습니다. fragment A에는 tab A, tab Btab C의 3 개 탭이 포함되어있어 앱이 실행되면 tab B이 표시됩니다. 이 세 개의 탭은 목록 중 하나를 클릭 할 때 fragment Afragment B으로 바뀌면 fragment B에서 역 누를 때 클릭 한 탭을 표시해야합니다.tabactivity 및 단편을 사용하는 동안 backpressed 처리하는 방법

+2

스택 오버 플로우에 오신 것을 환영합니다! [좋은 질문을하는 방법은 무엇입니까?] (https://stackoverflow.com/help/how-to-ask)와 [[Minimal, Complete, Verifiable Example]을 만드는 방법] (https : //stackoverflow.com/help/mcve). – Teasel

+2

지금까지 시도한 것을 게시 할 수 있습니까? –

답변

0

다음을 수행하십시오. 그 좋은 예는 FragmentonBackPressed() 기능을 구현하기 위해 Abstract ClassBackable Fragment을 사용합니다.

1) 추상 클래스 만들기 -

public class FragmentChannels extends BackableFragment { 

    ... 

    @Override 
    public void onBackButtonPressed() { 
     if (doTheThingRequiringBackButtonOverride) { 
      // do the thing 
     } else { 
      //go to your preferable fragment or activity when you press back on any fragment 
     } 
    } 

    ... 
} 

그게 전부에요 -

import android.app.Fragment; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.view.View; 

public abstract class BackableFragment extends Fragment implements View.OnKeyListener { 

    @Override 
    public void onViewCreated(View view, Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     view.setFocusableInTouchMode(true); 
     view.requestFocus(); 
     view.setOnKeyListener(this); 
    } 

    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
     if (event.getAction() == KeyEvent.ACTION_UP) { 
      if (keyCode == KeyEvent.KEYCODE_BACK) { 
       onBackButtonPressed(); 
       return true; 
      } 
     } 

     return false; 
    } 

    public abstract void onBackButtonPressed(); 
} 

2) 당신의 FragmentAbstract Class를 구현합니다. Reference

0
Try this in on click 

view = getActivity().findViewById(R.id.activity_page1); 
       ViewPager viewPager= (ViewPager)view.findViewById(R.id.viewpager); 
       int tab = viewPager.getCurrentItem(); 
       tab--; 
       viewPager.setCurrentItem(tab);