片段错误,transaction.replace()



我正在努力解决这个错误,我相信我正在混合支持库,但是,我不确定如何调整我的代码以避免出现错误。

  import android.app.FragmentManager;
  import android.app.FragmentTransaction;
  import android.os.Bundle;
  import android.support.v4.app.FragmentActivity;
  import android.view.View;
public void swapFragment(View v) {
    SearchFragment searchFragment = new SearchFragment();
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    transaction.remove(getSupportFragmentManager().findFragmentById(R.id.findBox)).commit();
    transaction = transaction.replace(R.id.findBox, searchFragment);
    transaction.addToBackStack(null);
    transaction.commit();
}

错误发生在以下行:

    transaction = transaction.replace(R.id.findBox, searchFragment);

第二个参数会导致一个错误,说明它是错误的参数。

如有任何帮助或指示,我们将不胜感激。

如果不查看所有来源,很难判断您做错了什么,但您马上就有了removereplace。你不需要两者都有。只需进行替换(即在幕后进行移除->添加)。

还要添加import语句,以查看SearchFragment是什么类型(以及您正在使用的Fragment Manager/FFragment Transaction)。

如果您使用的是v4支持库,则必须确保它们都是支持版本。

更新

查看您的进口…

您有import android.support.v4.app.FragmentActivity;,但您使用的是import android.app.FragmentManager;

所以你的代码应该看起来像:

    final FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.replace(R.id.findbox, new SearchFragment());
    ft.addToBackStack(null);
    ft.commit();

你的进口应该更像:

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;

假设SearchFragment extends Fragment使用该支持库版本。

您正在删除片段,然后尝试替换已删除的片段。试试这样的东西:

FragmentManager FM = getFragmentManager();
FragmentTransaction FT = FM.beginTransaction();
SearchFragment F1 = new SearchFragment();
FT.replace(R.id.findBox, searchFragment);
FT.commit();

我也得到了同样的错误。。。。。我希望这个解决方案能帮助你解决问题。在SearchFragment.java文件中,您已经在代码中将实例创建为SearchFragment。转到该文件和import android.app.Fragment并删除import androidx.fragment.app.Fragment(如有提及)。希望你的错误能得到纠正,因为这对我来说是有效的。

最新更新