2014-07-16 5 views
1

탭과 같이 하단에 4 개의 버튼이있는 Activity이 있습니다. 아무 단추 나 누르면 TabActivity에서와 같이 새 단편이이 단추 위에있는 FrameLayout에 표시됩니다. 내 문제 here을보십시오. 이제 나는 그 조각들을 숨기고 보여줄 수있는 방법을 찾아야한다고 생각합니다. 다시로드하지 않고 조각을 표시하고 숨길 수있는 방법을 알려주세요.조각을 숨기는 방법을 보여 주시겠습니까?

주요 단편을 숨기는 것을 보여주는 주요 목적은 현재 상태를 유지하는 것입니다. 내 조각 중 하나에서 AsynTask 그것을 다시 호출하는 조각 사이를 전환 할 때마다 AsyncTask 있습니다.

답변

2

//이

FragmentManager fm = getSupportFragmentManager(); 
fm.beginTransaction() 
      .show(fragment1) 
      .commit(); 

을 숨겨 때 조각을 보여 // 조각을 숨기기 위해

FragmentManager fm = getSupportFragmentManager(); 
fm.beginTransaction() 
      .hide(fragment1) 
      .commit(); 
+0

감사합니다. +10 – Nepster

1

당신은

선언 4 FrameLayout이

private FrameLayout fragment1; 
private FrameLayout fragment2; 
private FrameLayout fragment3; 
private FrameLayout fragment4; 

FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
ft.replace(R.id.fragment1, Fragment1.newInstance()); 
ft.replace(R.id.fragment2, Fragment2.newInstance()); 
ft.replace(R.id.fragment3, Fragment3.newInstance()); 
ft.replace(R.id.fragment4, Fragment4.newInstance()); 
ft.commit(); 

같은 몇 가지보기를지나 가시 나 사라와 함께 재생할 수 없습니다?

fragment1.setVisibility(View.Visible); 
fragment2.setVisibility(View.gone); 
fragment3.setVisibility(View.gone); 
fragment4.setVisibility(View.gone); 

및 방법에 의해

같은 : 나를 위해 작동 -> 공용 클래스 활동 ActionBarActivity를 확장 {

private FrameLayout fragment1; 
private FrameLayout fragment2; 

private Button bt1; 
private Button bt2; 

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

    fragment1 = (FrameLayout) findViewById(R.id.fragment1); 
    fragment2 = (FrameLayout) findViewById(R.id.fragment2); 

    bt1 = (Button) findViewById(R.id.button); 
    bt2 = (Button) findViewById(R.id.button2); 

    bt1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      fragment1.setVisibility(View.VISIBLE); 
      fragment2.setVisibility(View.GONE); 
     } 
    }); 

    bt2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      fragment1.setVisibility(View.GONE); 
      fragment2.setVisibility(View.VISIBLE); 
     } 
    }); 

    FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
    ft.replace(R.id.fragment1, new Fragment1()); 
    ft.replace(R.id.fragment2, new Fragment2()); 
    ft.commit(); 
} 
+0

조각은 볼 수 없습니다. 그들은 개체입니다 .setVisiblity 유효한 방법이 아닙니다. 연결된 질문 읽기 http://stackoverflow.com/questions/24774631/asynctask-is-re-executing-while-switching-between-fragments – Nepster

+0

예, 그러나 framelayout는 전망이다. 이보기로 직접 재생할 수 있습니다. – u53r

+0

xml에는 frameLayout이 하나뿐입니다. 나는 TabActivity에서하는 것처럼 다른 것으로 대체하고 싶습니다. 그리고 두 작업을 함께 제거하고 추가하십시오. 대체 == (현재 조각 + 다른 조각 추가) – Nepster

관련 문제