【发布时间】:2016-01-13 09:14:28
【问题描述】:
我按照this 发布的关于如何在 Android Studio 中滑动抽屉活动中的片段之间切换的说明进行操作,并且我很肯定我已正确按照显示的步骤进行操作。但是,在我的displayView 方法结束时,编译器抱怨我引用的片段对象与我传递给它的方法不兼容。该方法需要android.support.v4.app.Fragment,而我使用的片段对象(显然)是android.app.Fragment。虽然我也知道这是错误的,因为如果我像这样明确定义我的Fragment:
android.support.v4.app.Fragment fragment = null;
原始错误已修复,但整个 switch case 中的其余引用开始抱怨同样的原因:
Error:(135, 44) error: incompatible types: android.app.Fragment cannot be converted to android.support.v4.app.Fragment
我完全不知道是什么导致了这样的问题,但是我不是使用 Android SDK 的专家;很可能有一些我只是想念的东西。感谢所有反馈和帮助;我正忙于这个应用程序,需要尽快完成它。谢谢!
下面是displayView方法:
public void displayView(int viewId) {
Fragment fragment = null;
String title = getString(R.string.app_name);
switch (viewId) {
case R.id.nav_newsfeed:
fragment = new Feed_Fragment();
title = "News Feed";
break;
case R.id.nav_camera:
fragment = new Post_Fragment();
title = "Post a Picture";
break;
case R.id.nav_gallery:
fragment = new Gallery_Fragment();
title = "Your Posts";
break;
case R.id.nav_send:
fragment = new Message_Fragment();
title = "Direct Message";
break;
/*case R.id.nav_manage:
//fragment = new Settings_Fragment();
title = "Account Settings";
break;
case R.id.nav_share:
//fragment = new Share_Fragment();
title = "Share";
break;*/
}
if (fragment != null) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_frame, fragment); //2nd parameter causes issue
ft.commit();
}
// set the toolbar title
if (getSupportActionBar() != null) {
getSupportActionBar().setTitle(title);
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
}
【问题讨论】:
-
只需将您的 Fragments 类更改为从
android.support.v4.app.Fragment扩展而不是android.app.Fragment。
标签: java android android-fragments