コードのこの部分でエラーが発生しています:
private void displayView(int position) {
// update the main content by replacing fragments
Fragment fragment = null;
switch (position) {
case 0:
fragment = new HomeFragment();
break;
case 1:
fragment =new FindPeopleFragment();
break;
case 2:
fragment = new PhotosFragment();
break;
case 3:
fragment = new CommunityFragment();
break;
case 4:
fragment = new PagesFragment();
break;
case 5:
fragment = new WhatsHotFragment();
break;
default:
break;
}
if (fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, fragment).commit();
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(navMenuTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
} else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
}
私は得る
エラー:互換性のないタイプ:HomeFragmentはFragmentに変換できません
これがインポートです:
package liorsiag.lgbt;
import Android.app.FragmentManager;
import Android.content.res.Configuration;
import Android.content.res.TypedArray;
import Android.os.Bundle;
import Android.support.v4.app.ActionBarDrawerToggle;
import Android.app.Fragment;
import Android.support.v4.app.FragmentActivity;
import Android.support.v4.widget.DrawerLayout;
import Android.util.Log;
import Android.view.Menu;
import Android.view.MenuItem;
import Android.view.View;
import Android.widget.AdapterView;
import Android.widget.ListView;
import Java.util.ArrayList;
これがクラスのタイトルです:
public class MainActivity extends FragmentActivity {
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;
何を試しても、まだこのエラーが発生します
多くのナビゲーションドロワーチュートリアルを試しましたが、どれも機能していないようです。
これはimport
の問題のようです。
getFragmentMangager()
を使用する場合は、Fragment
クラスが_Android.app.Fragment
_クラスを拡張していることを確認してください。
万が一_Android.support.v4.app.Fragment
_を使用している場合(インポートを参照)、代わりにgetSupportFragmentManager()
を使用する必要があります
それが役に立てば幸い
変更してみてください
_import Android.app.Fragment;
_
に
_import Android.support.v4.app.Fragment;
_
他のすべてのインポートにもlibをサポートするクラスを使用します。また、getSupportFragmentManager()
は他の回答で述べたとおりです。
HomeFragment
クラス内
交換:
import Android.app.Fragment;
で:
import Android.support.v4.app.Fragment;
私の場合、私はline-1をline-2に変更しました
ライン1: import Android.app.Fragment
;
2行目: import Android.support.v4.app.Fragment
;
その働き
getSupportFragmentManager()
の代わりにgetFragmentManager()
を使用します
getSupportFragmentManager()
.beginTransaction()
.replace(in.jama.app.R.id.container, new Fragment())
.commit();
android.support.v4.app.Fragmentをインポートするだけです。すべてのFragmentClass();で。それでおしまい。
import _Android.app.Fragment;
_はgetFragmentManager()
メソッドで動作しますが、インポート_Android.support.v4.app.Fragment;
_を削除する必要がある前に
サポートライブラリを使用している場合は、サポートライブラリからFragmentとFragmentManagerの両方をインポートする必要があります。また、サポートフラグメントマネージャーを確実にロードする必要があります。
import Android.support.v4.app.Fragment;
import Android.support.v4.app.FragmentManager;
//other imports here...
public class SomeActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_some);
FragmentManager fm = getSupportFragmentManager();
Fragment fragment = fm.findFragmentById(R.id.fragment_container);
if(fragment == null) {
fragment = new SomeFragment();
fm.beginTransaction().add(R.id.fragment_container, fragment).commit();
}
}
}
Android Studio 2.3 getSupportFragmentManagerはAndroid.support.v4.appで動作しますが、Android studio 3.1ではgetFragmentManagerを使用する必要があります ここに画像の説明を入力してください