0

次のコードでフラグメントを追加および削除する2つのボタンが追加されました。削除後にフラグメントを追加するときにエラー "フラグメントが既にアクティブ"

package com.example.home.appfrag;

import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentTransaction; 
import android.view.View; 
import android.widget.Button; 

パブリッククラスMainActivityはFragmentActivity {

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

    if (findViewById(R.id.frame) != null){ 

     if (savedInstanceState != null) { 
      return; 
     } 

     Button bf1 = (Button)findViewById(R.id.bf1); 
     Button bf3 = (Button)findViewById(R.id.bf3); 
     final Second secondobj = new Second(); 


     bf1.setOnClickListener(new Button.OnClickListener() { 
       public void onClick(View v) { 
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
        transaction.add(R.id.frame, secondobj,"hai").commit(); 
       } 
      }); 

     bf3.setOnClickListener(new Button.OnClickListener() { 
      public void onClick(View v) { 
       FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
       transaction.remove(getSupportFragmentManager().findFragmentByTag("hai")); 
       transaction.addToBackStack("hai").commit(); 
      } 
     }); 

    } 
} 

}

+0

新しいアクティビティを追加してタグで削除する際にタグを追加することをお勧めします。フラグメントオブジェクトを使用して削除しないでください。フラグメントを追加するときも、追加する前に存在するかどうかを確認してください。 – Thilek

+0

ここにタグがあります。私はそれが何であるか分からない? – paulcab

+0

私は答えとして – Thilek

答えて

0

タグを有するフラグメントを追加して延びています。フラグメントクラス名はタグとして使用できます。

Second secondFragment = new Second(); 
    getFragmentManager().beginTransaction() 
     .replace(R.id.frame, secondFragment,"UNIQUE_FRAGMENT_TAG") 
     .addToBackStack("UNIQUE_FRAGMENT_TAG").commit(); 

タグを使用してフラグメントを削除します。

FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.remove(fragmentManager.findFragmentByTag("UNIQUE_FRAGMENT_TAG")).commit(); 
+0

を追加しました。私はxmlにタグを追加し、タグで追加して削除します。追加を2回クリックすると、まだ「断片的にアクティブな」というエラーが表示されました。 – paulcab

+0

あなたは全体の活動のためのコードを共有して気になります..断片には全く関係しないそれらのメソッドを削除することができます... – Thilek

関連する問題