如何从;android.app.Fragment“;至;android.support.v4.app.Fragment“;
我正在为我的应用程序进行Facebook集成。根据客户要求,我目前在应用程序中使用的所有片段都是如何从;android.app.Fragment“;至;android.support.v4.app.Fragment“;,android,android-fragments,Android,Android Fragments,我正在为我的应用程序进行Facebook集成。根据客户要求,我目前在应用程序中使用的所有片段都是 android.app.Fragment。现在,我们为Facebook创建的片段是android.support.v4.app.Fragment。如果我们将其转换为android.app.Fragment,则功能loginButton.setFragment(此)显示错误 我的问题是,我如何从android.app.Fragment移动到 android.support.v4.app.Fragmen
android.app.Fragment
。现在,我们为Facebook创建的片段是android.support.v4.app.Fragment
。如果我们将其转换为android.app.Fragment
,则功能loginButton.setFragment(此)代码>显示错误
我的问题是,我如何从android.app.Fragment
移动到
android.support.v4.app.Fragment
因为这段代码给出了错误:
getActivity().getFragmentManager()
.beginTransaction()
.replace(R.id.content_frame,new MainFragment())
.addToBackStack(null)
.commit();
它显示的错误是:
错误的第二个参数类型。发现:
'com.nicklodean.nicklodean.fragment.mainframent',必填项:
'android.app.Fragment'
请建议如何解决此问题。只需添加这些依赖项即可
dependencies {
compile 'com.android.support:support-v4:18.0.0'
compile "com.android.support:appcompat-v7:18.0.+"
}
compile 'com.android.support:appcompat-v7:XX.Y.Z'
首先,您需要在Gradle依赖项中添加
dependencies {
compile 'com.android.support:support-v4:18.0.0'
compile "com.android.support:appcompat-v7:18.0.+"
}
compile 'com.android.support:appcompat-v7:XX.Y.Z'
对于您拥有的相应SDKXX.Y
版本
(真的只需要v4库,但v7不应该有问题)
我无法帮助您使用loginButton.setFragment(this)
,因为我不知道它在做什么。。。但是,您当然需要更改loginButton
类的class参数/import
假设您使用的是AppCompatActivity
或FragmentActivity
,则需要使用getActivity().getSupportFragmentManager()
个人意见:您应该从片段中回调活动以管理FragmentManager(),而不是使用getActivity()
直接从片段类中提取它,我希望这会有所帮助
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
Fragment oldFragment = getSupportFragmentManager().findFragmentByTag(YOUR_FRAGMENT_TAG);
if (oldFragment == null) {
ft.add(yourfragment,YOUR_FRAGMENT_TAG);
ft.commitAllowingStateLoss();
} else if (!oldFragment.isAdded()) {
ft.remove(oldFragment);
ft.add(yourfragment,YOUR_FRAGMENT_TAG);
ft.commitAllowingStateLoss();
}
您只需将android.support.v4.app.FragmentManager
用于任何android.support.v4.app.Fragment
,将android.app.FragmentManager
用于任何android.app.Fragment
。这是没有办法的
如果您需要同时使用片段
类的两个版本(在单个活动
中),则必须分别管理每个片段管理器
中的片段。请查看以了解如何执行此操作。要使用getActivity().getSupportFragmentManager(),我需要将我的app.fragment更改为android.support.v4.app.fragment,我无法执行此操作,因为它超出了要求,那么您的要求与代码冲突。你问过如何使用v4片段,这就是你如何做到的为什么是版本18?而v7
包含v4
,所以只需要第二个oneNot帮助,因为我必须使用“getSupportFragmentManager()”才能使用“import android.support.v4.app.Fragment”。我不能这样做,因为我必须在这里使用“android.app.Fragment”。请尝试将android.support.v4.app放在声明片段之前:android.support.v4.app.Fragment=getSupportFragmentManager().findfFragmentByTag(您的片段标记);同样在FragmentTransaction之前,但android.support.v4.app:android.support.v4.app.FragmentTransaction ft=getSupportFragmentManager().beginTransaction();