In diesem Codeteil wird ein Fehler angezeigt:
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");
}
}
Ich bekomme
fehler: Inkompatible Typen: HomeFragment kann nicht in Fragment konvertiert werden
dies ist die importe:
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;
und das ist der Klassentitel:
public class MainActivity extends FragmentActivity {
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;
Egal was ich versucht habe, ich bekomme immer noch diesen Fehler
Ich habe viele Navigations-Lernprogramme ausprobiert, aber keines davon scheint zu funktionieren.
Dies scheint ein import
Problem zu sein.
Stellen Sie bei Verwendung von getFragmentMangager()
sicher, dass Ihre Fragment
-Klassen die Android.app.Fragment
-Klasse erweitern.
Wenn Sie Android.support.v4.app.Fragment
(siehe Ihre Importe) verwenden, müssen Sie stattdessen getSupportFragmentManager()
verwenden
Ich hoffe es hilft
Versuchen Sie es zu ändern
import Android.app.Fragment;
zu
import Android.support.v4.app.Fragment;
Verwenden Sie Klassen aus dieser Support-Bibliothek auch für alle anderen Importe. Auch getSupportFragmentManager()
wie in der anderen Antwort erwähnt.
In Ihrer HomeFragment
-Klasse
ersetzen:
import Android.app.Fragment;
mit:
import Android.support.v4.app.Fragment;
In meinem Fall habe ich Zeile-1 mit Zeile-2 geändert
Zeile-1: import Android.app.Fragment
;
Zeile-2: import Android.support.v4.app.Fragment
;
Es funktioniert
verwenden Sie getSupportFragmentManager()
anstelle von getFragmentManager()
getSupportFragmentManager()
.beginTransaction()
.replace(in.jama.app.R.id.container, new Fragment())
.commit();
sie müssen nur Android.support.v4.app.Fragment importieren. in der ganzen FragmentClass (); . das ist es.
import Android.app.Fragment;
arbeitet mit der getFragmentManager()
-Methode, aber bevor Sie den Import Android.support.v4.app.Fragment;
entfernen müssen
Wenn Sie die Support-Bibliothek verwenden, sollten Sie sicherstellen, dass sowohl Fragment als auch FragmentManager aus der Support-Bibliothek importiert werden. Sie müssen außerdem sicherstellen, dass der Support Fragment Manager geladen wird.
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();
}
}
}
In Android Studio 2.3 funktioniert getSupportFragmentManager mit Android.support.v4.app, aber für Android Studio 3.1 müssen Sie getFragmentManager die Bildbeschreibung hier eingeben .