Error incompatible types: android.app.FragmentManager cannot be converted to android.support.v4.app.FragmentManager

20,192

Change

import android.app.Fragment;
import android.app.FragmentManager;

to

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;

in every class. you are facing problems because in your Fragment creation class you are using support v4 fragment and in your MainActivity class you are inflating as a simple fragment.

You also need to change getFragmentManager() to getSupportFragmentManager(), and make sure they're extending a FragmentActivity class.

Hope it will help you.

Share:
20,192
Tony
Author by

Tony

CodeforLife

Updated on July 05, 2022

Comments

  • Tony
    Tony almost 2 years

    Error Error incompatible types: android.app.FragmentManager cannot be converted to android.support.v4.app.FragmentManager is drving me nuts.

    In my app, I have 3 navigation drawer item, timesheet,claim and view, created in MainActivity. Now I wanted to add two tabs with swipe view in view item.

    MainActivity // for navigation drawer

       import android.app.Fragment;
       import android.app.FragmentManager;
       private void selectItem(int position) {
    
                Fragment fragment = null;
    
                switch (position) {
                    case 0:
                        fragment=new TimeSheet();
                        break;
                    case 1:
    
                        fragment=new Claims1();
                        break;
    
                    case 2:
                        fragment=new Viewview();
                        break;
    
                    default:
                        break;
                }
    

    TabsFragmentPagerAdapter.java

    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.app.FragmentPagerAdapter;
    
    public class TabsFragmentPagerAdapter extends FragmentPagerAdapter {
    
        public TabsFragmentPagerAdapter(FragmentManager fm) {
            super(fm);
            // TODO Auto-generated constructor stub
        }
    
        @Override
        public Fragment getItem(int index) {
            // TODO Auto-generated method stub
    
            switch(index) {
                case 0:
                    return new UpdatePage2();
                case 1:
                    return new Receipt();
    
            }
            return null;
        }
    
        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return 2;
        }
    
    }
    

    ViewView.java

    import android.app.Fragment;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.database.sqlite.SQLiteDatabase;
    import android.os.Bundle;
    import android.app.FragmentTransaction;
    import android.support.v4.view.ViewPager;
    import android.app.ActionBar;
    import android.support.v4.widget.SimpleCursorAdapter;
    import android.support.v7.app.AlertDialog;
    import android.view.LayoutInflater;
    import android.view.Menu;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.AdapterView;
    import android.widget.ListView;
    
    import com.example.project.project.database.MyDatabaseHelper;
    
    public class ViewView extends Fragment implements ActionBar.TabListener {
    
        InfoAPI sqlcon;
        private SimpleCursorAdapter dataAdapter;
        private SQLiteDatabase database;
        private MyDatabaseHelper dbHelper;
        private ListView listView;
        private ViewPager viewPager;
        private TabsFragmentPagerAdapter mAdapter;
        private ActionBar actionBar;
        private String[] tabs = {"Information", "receipt"};
    
    
    
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            View View1 = inflater.inflate(R.layout.viewview1, container, false);
            listView = (ListView) View1.findViewById(R.id.listView1);
            dbHelper = new MyDatabaseHelper(getActivity());
            sqlcon = new InfoAPI(getActivity());
            viewPager = (ViewPager) View1.findViewById(R.id.pager);
            mAdapter = new TabsFragmentPagerAdapter(getActivity().getFragmentManager()); //here the error
            viewPager.setAdapter(mAdapter);
            actionBar = getActivity().getActionBar();
            actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
            for (int i = 0; i < 2; i++) {
                actionBar.addTab(actionBar.newTab().setText(tabs[i]).setTabListener(this));
            }
            viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    
                @Override
                public void onPageSelected(int arg) {
                    // TODO Auto-generated method stub
                    actionBar.setSelectedNavigationItem(arg);
                }
    
                @Override
                public void onPageScrolled(int arg0, float arg1, int arg2) {
                    // TODO Auto-generated method stub
    
                }
    
                @Override
                public void onPageScrollStateChanged(int arg0) {
                    // TODO Auto-generated method stub
    
                }
            });
    
            BuildList();
            return View1;
        }
    

    Problem :

    Error:(49, 81) error: incompatible types: android.app.FragmentManager cannot be converted to android.support.v4.app.FragmentManager

    If changed import android.support.v4.app.FragmentManager; in TabsFragmentPagerAdapter to import android.app.FragmentManager;, the first issue solve but get this Error:(12, 15) error: incompatible types: android.app.FragmentManager cannot be converted to android.support.v4.app.FragmentManager...I have no idea how to fix ..

    Edited

    MainActivity

    import android.app.Fragment;
    import android.support.v4.app.FragmentManager;
      case 2:
                        fragment=new ViewView();
                        break;
    
                    default:
                        break;
                }
    
                if (fragment != null) {
                    FragmentManager fragmentManager = getFragmentManager();
                    fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();
    
                    mDrawerList.setItemChecked(position, true);
                    mDrawerList.setSelection(position);
                    setTitle(mNavigationDrawerItemTitles[position]);
                    mDrawerLayout.closeDrawer(mDrawerList);
    
                } else {
                    Log.e("MainActivity", "Error in creating fragment");
                }
            }
    

    Error

    Error:(148, 30) error: incompatible types: ViewView cannot be converted to Fragment Error:(156, 69) error: incompatible types: android.app.FragmentManager cannot be converted to android.support.v4.app.FragmentManager Error:(157, 80) error: incompatible types: android.app.Fragment cannot be converted to android.support.v4.app.Fragment

  • Tony
    Tony over 8 years
    After change, I get error on this line mAdapter = new TabsFragmentPagerAdapter(getActivity().getFragmentManager())‌​; Error Error:(49, 81) error: incompatible types: android.app.FragmentManager cannot be converted to android.support.v4.app.FragmentManager
  • Mike M.
    Mike M. over 8 years
    They'll also need to change getFragmentManager() to getSupportFragmentManager(), and make sure they're extending a FragmentActivity class.
  • Sanket Shah
    Sanket Shah over 8 years
    change android.app.FragmentManager to android.support.v4.app.FragmentManager in your MainActivity class
  • Tony
    Tony over 8 years
    In mainActivity public void onClick(View arg0) { FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); dialog.show(ft, "DatePicker"); }
  • Tony
    Tony over 8 years
    Error Error:(84, 34) error: cannot find symbol method getSupportFragmentManager() , Error:(85, 15) error: no suitable method found for show(android.support.v4.app.FragmentTransaction,String) method DialogFragment.show(FragmentManager,String) is not applicable (argument mismatch; android.support.v4.app.FragmentTransaction cannot be converted to FragmentManager) method DialogFragment.show(android.app.FragmentTransaction,String) is not applicable (argument mismatch; android.support.v4.app.FragmentTransaction cannot be converted to android.app.FragmentTransaction)
  • Sanket Shah
    Sanket Shah over 8 years
  • swapnil saha
    swapnil saha about 8 years
    The above mentioned changes have to be done in every fragments which you declare. This correction helped me
  • Mahdi
    Mahdi about 7 years
    @Andrain Thank you.
  • Polycarp Kavoo
    Polycarp Kavoo over 5 years
    @Andrain Works like charm