无法解析方法getSupportFragmentManager()

时间:2018-05-16 19:55:56

标签: java android gradle fragmentmanager

我发现消息无法解析方法' getSupportFragmentManager()'我想在活动中添加一个片段

这是我的代码

package com.formation.testfragment;

import android.app.Activity;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v7.app.*;

import android.support.v4.app.FragmentTransaction;
import android.os.Bundle;

public class MainActivity extends Activity {

    private FragmentManager fragmentManager;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        fragmentManager = getSupportFragmentManager();
    }
}

这是我的build.gradle

申请插件:' com.android.application'

android {


    compileSdkVersion 27
    defaultConfig {
        applicationId "com.formation.testfragment"
        minSdkVersion 17
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    repositories {
        mavenCentral()
    }


}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

    compile 'com.android.support:support-v4:27.1.1'
}

但找不到方法getSupportFragmentManager()。 谢谢。

3 个答案:

答案 0 :(得分:2)

getSupportFragmentManager()FragmentActivity上的一种方法。您需要直接或间接地继承它(例如,通过扩展AppCompatActivity)。

在您的情况下,根据您的依赖关系,您可以直接扩展FragmentActivity

public class MainActivity extends FragmentActivity

答案 1 :(得分:2)

您可以从FragmentActivity documentation找到getSupportFragmentManager是FragmentActivity的方法。通常,当前的Android项目使用支持appcompat库,您可以在其中使用AppCompatActivity。 AppCompatActivity源自FragmentActivity。因此,您可以使用FragmentActivity:

public class MainActivity extends FragmentActivity

或使用AppCompatActivity:

public class MainActivity extends AppCompatActivity 

答案 2 :(得分:1)

getSupportFragmentManager()是FragmentActivity

中的方法之一

试试这个

public class MainActivity extends FragmentActivity

使用方法getSupportFragmentManager()

通常人们会这样做,切换片段

read more about fragment activity以下是链接,详细了解fragment

// Begin the transaction
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
// Replace the contents of the container with the new fragment
ft.replace(R.id.your_placeholder, new FooFragment());
// or ft.add(R.id.your_placeholder, new FooFragment());
// Complete the changes added above
ft.commit();

R.id.frameLayout 是您的Layout xml文件中来自<frameLayout>的ID。

示例:

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/frameLayout">
</FrameLayout>