Java 如何解决Android中的事务错误?
我想我的问题是关于我用于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”的执行失败。 编译失败;有关详细信息,请参阅编译器错误输出 代码:Java 如何解决Android中的事务错误?,java,android,Java,Android,我想我的问题是关于我用于FragmentTransaction的版本,但我无法获得它。以下是我在构建应用程序失败时收到的消息: 错误:(21,20)错误:找不到合适的add方法(int,BlankFragment) 方法FragmentTransaction.add(片段,字符串)不适用 (参数不匹配;int无法转换为Fragment) 方法FragmentTransaction.add(int,Fragment)不适用 (参数不匹配;BlankFragment无法转换为Fragment) 错误
下面是我用来将片段更新为新片段的方法。假设您已将占位符片段作为框架布局放置到位
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;