【问题标题】:Error "fragment already active" when adding fragment after remove删除后添加片段时出现“片段已激活”错误
【发布时间】:2016-09-12 10:32:13
【问题描述】:

我添加了两个按钮来使用以下代码添加和删除片段。

包 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();
            }
        });

    }
}

}

【问题讨论】:

  • 我建议在添加新活动时添加标签并通过标签将其删除。不要使用片段对象将其删除。同样,当您添加片段时,请在添加之前检查它是否存在..
  • 这里的标签是什么。不知道是什么?
  • 我在下面添加了答案

标签: android android-fragments fragment android-fragmentactivity


【解决方案1】:

添加带有标签的片段。您可以使用片段类名称作为标记。

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();

【讨论】:

  • 我已经在 xml 中添加了标签,并按标签添加和删除。但单击两次添加时仍然出现错误“片段已处于活动状态”。
  • 你介意分享整个活动的代码吗..你可以删除那些与片段无关的方法......
猜你喜欢
  • 2012-05-09
  • 2013-11-28
  • 2017-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多