2016-07-20 4 views
2

좋아요. 아래쪽 네비게이션에 this library을 사용하는 안드로이드 앱을 만들고 기본 액티비티를 Framelayout과 함께 사용하여 로딩/바꾸기 등BottomBar 및 조각 컨테이너로 안드로이드 조각 다시로드 사용 안함

작동 방법 : 아래쪽 막대 아이콘을 누르면 해당 부분이로드되어 완벽하게 작동합니다.

내 문제 : 그때 첫 번째 탭하고 두 번째 탭 다시 첫 번째 탭 처음부터 전체 단편 리로드를 탭하면.

이 동작을 원하지 않습니다. 누구든지 단편의 상태를 유지하는 방법에 대한 좋은 조언을 가지고 있습니다. 또한 하단 바 라이브러리를 사용하여입니다.

나는 (이전 응용 프로그램은 탐색을위한 바닥 막대를 사용하지 않았다) 이전 응용 프로그램에서 pagerview와 비슷한 달성하지만 난 FrameLayout이 보유 ONE 기본 활동 호출기보기를 사용하는 방법을 잘 모르겠어요 파편을 교체하거나 심지어 최선의 해결책이라면.

나는 이전의 것들을 대체 할 때마다 조각들이 처음부터 새로 고침된다는 것을 제외하고는 나는 해결책을 좋아한다. 누구든지 나를 도울 수있는 도움이나 제안이 있다면 크게 감사하겠습니다.

답변

2

좋아요. 나는 당분간 해결 방법을 찾은 것 같았습니다. 그것은 탭을 전환 한 후 조각 상태를 유지하므로 만족 스럽습니다. 조각 컨테이너를 호스팅하는 기본 활동 클래스에서

은 내가 나에게 알려 주시기 바랍니다

public class BaseActivity extends AppCompatActivity 
{ 
    AFragment AFragment = new AFragment(); 
    BFragment BFragment = new BFragment(); 

    Fragment currentFragment; 

    Boolean aIsActive = false; 
    Boolean bIsActive = false; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_base); 

     BottomBar bottomBar = BottomBar.attach(this, savedInstanceState); 

     bottomBar.setItems(
       new BottomBarTab(null,"A"), 
       new BottomBarTab(null,"B") 
     ); 

     bottomBar.setDefaultTabPosition(0); 

     bottomBar.setOnTabClickListener(new OnTabClickListener() 
     { 
      @Override 
      public void onTabSelected(int position) 
      { 
       if (position == 0) 
       { 
        if(!aIsActive) 
        { 
         getSupportFragmentManager().beginTransaction().add(R.id.fragmentContainer,AFragment).commit(); 
         aIsActive = true; 
        } 
        else 
        { 
         getSupportFragmentManager().beginTransaction().hide(currentFragment).show(AFragment).commit(); 
        } 

        currentFragment = AFragment; 
       } 
       else if(position == 1) 
       { 
        if(!bIsActive) 
        { 
         getSupportFragmentManager().beginTransaction().add(R.id.fragmentContainer,BFragment).commit(); 
         bIsActive = true; 
        } 
        else 
        { 
         getSupportFragmentManager().beginTransaction().hide(currentFragment).show(BFragment).commit(); 
        } 

        currentFragment = BFragment; 
       } 
      } 

      @Override 
      public void onTabReSelected(int position) { 

      } 
     }); 

    } 

} 

을 다음과 LOE 및 조각 : 어떤 제안이나 의견을 새로 고치지 않고는 예상대로 작동 보라했다 자유롭게 논평 할 수있다.

+0

여기서 한 가지 개선점은 isActive 플래그를 조각에 대한 변수를 유지하는 데 더 잘 유지하는 대신, 변수를 null에 대해 확인하는 것일 수 있습니다. 그게 사실이라면 조각을 만들어야합니다. 그렇지 않으면 조각을 바꿔야합니다. – Ali