我的代码存在类型问题。我不明白,因为我的"延伸"是正确的。
@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&& amp;& AnnoncesFragment:
public class HomeFragment extends Fragment {
public class AnnouncesFragment extends Fragment {
AndroidStudio上的错误是:
替换(int,android.support.v4.app.Fragment) FragmentTransaction 无法应用于(int,com.xxx.xxxx.xx.AnnouncesFragment)
在Android doc上: http://developer.android.com/reference/android/support/v4/app/FragmentTransaction.html
我如何使用功能 - >
replace(int containerViewId, Fragment fragment)
谢谢,
答案 0 :(得分:0)
这是因为您在扩展课程时使用的是android.app.Fragment
的最新版本。您想要使用android.support.v4.app.Fragment
。
答案 1 :(得分:0)
在这种情况下,请确保您的片段是android.support.v4.app.FragmentActivity
而非android.app.Fragment
的实例。
答案 2 :(得分:0)
请确保您所有与片段相关的组件都是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();
}