使用getFragmentManager()时类型不兼容

时间:2018-09-30 16:13:44

标签: android fragmentmanager

我有以下代码:

package asus.example.com.notes1;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.ShareActionProvider;

public class MainActivity extends Activity {
private void selectItem(int position){
        Fragment fragment;
        switch (position){
            case 1:
                fragment = new PizzaFragment();
                break;
            case 2:
                fragment = new PastaFragment();
                break;
            case 3:
                fragment = new StoresFragment();
                break;
                default:
                    fragment = new TopFragment();
        }
        FragmentTransaction ft = getFragmentManager().beginTransaction();
        ft.replace(R.id.content_frame, fragment);
        ft.addToBackStack(null);
        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
        ft.commit();
    }
}

我不知道为什么,但是Android Studio在以下行下划线:FragmentTransaction ft = getFragmentManager().beginTransaction();并写道:

  

不兼容的类型。需要:   找到android.support.v4.app.FragmentTransaction:   android.app.FragmentTransaction

试图改变:

  

android.support.v4.app.FragmentTransaction

上:

  

android.app.FragmentTransaction

但是在这种情况下,它取消界定以下行:

ft.replace(R.id.content_frame, fragment);

并写道:

  

第二次辩论类型错误

也许是因为扩展了Activity(也许对于AppCompat来说一切正常,但是我无法更改,好像我知道,我在应用中使用的主题与Appcompat不兼容)

1 个答案:

答案 0 :(得分:1)

您正在使用android.support.v4.app.FragmentManager的错误,那么您应该使用getSupportFragmentManager()

需要改变

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_frame, fragment);