Java 如何解决Android中的事务错误?

Java 如何解决Android中的事务错误?,java,android,Java,Android,我想我的问题是关于我用于FragmentTransaction的版本,但我无法获得它。以下是我在构建应用程序失败时收到的消息: 错误:(21,20)错误:找不到合适的add方法(int,BlankFragment) 方法FragmentTransaction.add(片段,字符串)不适用 (参数不匹配;int无法转换为Fragment) 方法FragmentTransaction.add(int,Fragment)不适用 (参数不匹配;BlankFragment无法转换为Fragment) 错误

我想我的问题是关于我用于FragmentTransaction的版本,但我无法获得它。以下是我在构建应用程序失败时收到的消息:

错误:(21,20)错误:找不到合适的add方法(int,BlankFragment) 方法FragmentTransaction.add(片段,字符串)不适用 (参数不匹配;int无法转换为Fragment) 方法FragmentTransaction.add(int,Fragment)不适用 (参数不匹配;BlankFragment无法转换为Fragment) 错误:(22,20)错误:找不到适合添加的方法(int,Fragment2) 方法FragmentTransaction.add(片段,字符串)不适用 (参数不匹配;int无法转换为Fragment) 方法FragmentTransaction.add(int,Fragment)不适用 (参数不匹配;Fragment2无法转换为Fragment) 错误:任务“:app:compiledBugJavaWithJavaC”的执行失败。 编译失败;有关详细信息,请参阅编译器错误输出

代码:


下面是我用来将片段更新为新片段的方法。假设您已将占位符片段作为框架布局放置到位

protected void swapFragment(BaseFragment fragment, @Nullable Bundle bundle) {
        if (fragment.isVisible()) {
            return;

        }

        A35Log.v(TAG, "swapFragment( " + fragment.getClass().getSimpleName() + " )");
        Bundle currentFragBundle = fragment.getArguments();
        if (currentFragBundle == null && bundle != null) {
            fragment.setArguments(bundle);

        } else if (bundle != null) {
            fragment.getArguments().putAll(bundle);

        }


        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentManager.executePendingTransactions();

        //Make sure the requested fragment isn't already on the screen before adding it
        if (fragment.isAdded()) {
            if (fragment.isHidden()) {
                fragmentManager.beginTransaction().show(fragment).commit();

            }

            A35Log.v(TAG, "Fragment was hidden, so removeFullScreen instead of replace");
            return;

        }

        mSelectedFragment = fragment;
        A35Log.v(TAG, "Replacing Active Fragment with " + fragment.getClass().getSimpleName());

        FragmentManager manager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = manager.beginTransaction();
        fragmentTransaction.replace(R.id.fragPlaceholder, fragment);
        fragmentTransaction.commit();

    }

取而代之的是给它一个快照,并确保您有一个名为fragPlaceHolder的布局,或者更新此方法,以从XML指向您的FrameLayout。我通常在BaseActivity或类似的程序中使用它来交换片段,比如抽屉导航。

这可能是因为您试图从支持库中添加一个
片段
,该库是从
android.support.v4.app.Fragment
扩展而来的
android.app.FragmentTransaction
。因此,您需要将来自支持库的FragmentTransaction用于:

import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;

欢迎来到堆栈溢出。你没有解释任何问题。如果你一开始不告诉我们出了什么问题,我们该怎么帮你?你的工作是清楚地解释你的问题;这是问答的前半部分。如果你没有正确地写一个问题,我们无法提供答案。请花些时间阅读这些页面,尤其是。当你说出错误时,你需要告诉我们你得到了什么错误,包括确切的错误信息。如果你得到了错误,请发布你的日志。启动旧的调试器,让我们知道您的程序在哪一行失败。错误:(21,20)错误:找不到适合add(int,BlankFragment)方法FragmentTransaction的方法。add(Fragment,String)不适用(参数不匹配;int无法转换为Fragment)方法FragmentTransaction。add(int,Fragment)不适用(参数不匹配;BlankFragment无法转换为Fragment)>编译失败;有关详细信息,请参阅编译器错误输出。这些是我得到的错误消息。问题似乎是,用于添加片段的方法无法识别“BlankFragment”或“Fragment2”要成为
片段
。请检查它们是否确实是
片段
。作为初学者,您应该习惯于阅读Android官方文档。请参阅。
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;