Reputation: 393
I'm getting an error in this part of code:
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");
}
}
I get
error: incompatible types: HomeFragment cannot be converted to Fragment
this is the imports:
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;
and this is the class title:
public class MainActivity extends FragmentActivity {
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;
No matter what I've tried I still get this error
I've tried a lot of navigation drawer tutorials, but none of them seem to work.
Upvotes: 37
Views: 67750
Reputation: 519
i having same issue so i updated
implementation 'androidx.appcompat:appcompat:1.2.0'
to
implementation 'androidx.appcompat:appcompat:1.3.0-beta01'
it is working fine now
Upvotes: 0
Reputation: 6522
If you are using support library, you should ensure to import both Fragment and FragmentManager from the support library. You will also need to ensure to load the support fragment manager.
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();
}
}
}
Upvotes: 0
Reputation: 1215
In Android Studio 2.3 getSupportFragmentManager works with android.support.v4.app but android studio 3.1 you have to use getFragmentManager enter image description here
Upvotes: 1
Reputation: 21
you just have to import android.support.v4.app.Fragment; in the all the FragmentClass();. that's it.
Upvotes: 2
Reputation: 3776
This seems to be an import
problem.
When using getFragmentMangager()
, make sure that your Fragment
classes extend android.app.Fragment
class.
If by any chance you are using android.support.v4.app.Fragment
(see your imports), then you need to use getSupportFragmentManager()
instead
Hope it helps
Upvotes: 78
Reputation: 1
import android.app.Fragment;
works with getFragmentManager()
method but before you have to remove the import android.support.v4.app.Fragment;
Upvotes: 0
Reputation: 14938
use getSupportFragmentManager()
Instead of getFragmentManager()
getSupportFragmentManager()
.beginTransaction()
.replace(in.jama.app.R.id.container, new Fragment())
.commit();
Upvotes: 2
Reputation: 947
In my case i have changed line-1 with line-2
Line-1: import android.app.Fragment
;
Line-2: import android.support.v4.app.Fragment
;
Its working
Upvotes: 3
Reputation: 75
In your HomeFragment
class
replace:
import android.app.Fragment;
with:
import android.support.v4.app.Fragment;
Upvotes: 4
Reputation: 260
Try changing
import android.app.Fragment;
to
import android.support.v4.app.Fragment;
Use classes from that support lib for all other imports too. Also getSupportFragmentManager()
as mentioned in the other answer.
Upvotes: 10