![](/img/trans.png)
[英]I am trying to switch between activities using the navigation drawer, and not fragments
[英]Type error - Switch fragments in the Navigation Drawer
我的代码类型有问题。 我不明白,因为我的“扩展名”正确放置了。
@Override
public void onNavigationDrawerItemSelected(int position) {
FragmentManager fragmentManager = getSupportFragmentManager();
if (position == 0) {
fragmentManager.beginTransaction()
.replace(R.id.container, new HomeFragment())
.commit();
} else if (position == 1) {
fragmentManager.beginTransaction()
.replace(R.id.container, new AnnouncesFragment())
.commit();
}
}
new HomeFragment()
和new AnnouncesFragment()
。
HomeFragment && AnnoncesFragment的原型:
public class HomeFragment extends Fragment {
public class AnnouncesFragment extends Fragment {
AndroidStudio上的错误是:
FragmentTransaction中的 replace(int,android.support.v4.app.Fragment)无法应用于(int,com.xxx.xxxx.xx.AnnouncesFragment)
在android doc上: http : //developer.android.com/reference/android/support/v4/app/FragmentTransaction.html
我如何使用功能->
replace(int containerViewId, Fragment fragment)
谢谢,
这是因为扩展类时使用的是最新版本的android.app.Fragment
。 您想改用android.support.v4.app.Fragment
。
确保您的片段是android.support.v4.app.FragmentActivity
实例,而不是android.app.Fragment
的实例。
确保您所有与片段相关的组件都是android.support.v4.app...
实例,而不是android.app ....的实例。
还要使用正确的片段管理器创建事务:使用Activity.getSupportFragmentManager()
而不是Activity.getFragmentManager()
因此您的片段必须看起来像:
import android.support.v4.app.Fragment;
...
public class MyFragment extends Fragment {
...
}
以及FragmentTransaction的代码:
import android.support.v4.app.FragmentTransaction;
...
{
MyFragment myFragment = new MyFragment();
FragmentTransaction ftx = getSupportFragmentManager().beginTransaction();
...
ftx.replace(R.id.my_fragment_id, myFragment);
...
ftx.commit();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.