2012-07-29 14 views
1

我想刪除一個片段,並顯示一個烤麪包,當我點擊一個textView。我的代碼顯示吐司,但不刪除片段。刪除不工作的片段

我的方法:

public void hide(View view) { 

     My_frag myFrag= new My_frag(); 
     FragmentTransaction transaction = getSupportFragmentManager() 
       .beginTransaction(); 
     transaction.remove(myFrag); 
     transaction.commit(); 
     Toast.makeText(getApplicationContext(), "Hello", Toast.LENGTH_LONG) 
       .show(); 
    } 

My_frag類:

public class My_frag extends android.support.v4.app.Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     return inflater.inflate(R.layout.my_frag_layout, container, false); 
    } 
} 

回答

3

在某些時候你必須創建並添加Fragment是否正確?您正在重新創建hide(...)方法中的片段,以便您嘗試刪除從未添加過的內容。確定您可能已經添加了一個實例,但不是您試圖刪除的實例。 請改爲在您的Activity中創建一個全局變量Fragment fragToRemove。當你創建這個片段時(你就是在那裏做transaction.add(fragToRemove = new My_Frag);),你將會擁有一個實例。然後將您的transaction.remove(myFrag)更改爲transaction.remove(fragToRemove),它應該工作得很好。

+0

是的,我加在片段之前發生的按鈕點擊。當我點擊進入editText視圖時,我想讓片段消失。我會嘗試你的建議並留下評論。謝謝 – EGHDK 2012-07-29 20:43:40

+1

它的工作。我只是把'My_frag myFrag = new My_frag();我的應用程序的頂部有' ',並且在'show()'和'hide()'方法中刪除了這一行。 – EGHDK 2012-07-29 20:47:42

0

徑比其他片段事務的實例,同時增加片段的活性物吸收和調用該除去方法,並傳遞其在時使用片段的相同的實例。

例子:

public class MainActivity extends AppCompatActivity { 

    FragmentTransaction fragmentTransaction; 
    BlankFragment blankFragment; 

    Button b; 

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

     b = (Button) findViewById(R.id.activity_button); 
     fragmentTransaction = getSupportFragmentManager().beginTransaction(); 

     blankFragment=new BlankFragment(); //Fragment instance 
     fragmentTransaction.add(R.id.main_layout,blankFragment).commit(); 
     b.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
      ft.remove(blankFragment).commit(); //created different 
     } 
    }); 

} 

在你可以做的片段也還可以在片段X的組件的點擊刪除片段X相同的方式