繁体   English   中英

输入错误-在导航抽屉中切换片段

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM