【问题标题】:Cannot resolve method getSupportFragmentManager()无法解析方法 getSupportFragmentManager()
【发布时间】:2018-05-16 19:55:55
【问题描述】:

我发现消息 Cannot resolve method 'getSupportFragmentManager ( )' I want to add a fragment in an activity

这是我的代码

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 ( )。 谢谢。

【问题讨论】:

  • 你是在扩展 android.app.Activity 而不是 android.support.v7.app.AppCompatActivity 吗?
  • 向我们展示您的代码
  • 你需要扩展 AppCompatActivity

标签: java android gradle fragmentmanager


【解决方案1】:

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

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

public class MainActivity extends FragmentActivity

【讨论】:

    【解决方案2】:

    FragmentActivity documentation可以发现getSupportFragmentManager是FragmentActivity的一个方法。通常,当前的 Android 项目正在使用您拥有 AppCompatActivity 的支持 appcompat 库。 AppCompatActivity 派生自 FragmentActivity。因此,您可以使用任一 FragmentActivity:

    public class MainActivity extends FragmentActivity
    

    或使用 AppCompatActivity:

    public class MainActivity extends AppCompatActivity 
    

    【讨论】:

      【解决方案3】:

      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>
      

      【讨论】:

        【解决方案4】:

        你只需要将你的类扩展到 AppCompatActivity 即public class MainActivity extends Activitypublic class MainActivity extends AppCompatActivity

        【讨论】:

          猜你喜欢
          • 2021-08-28
          • 2015-02-10
          • 1970-01-01
          • 2012-08-23
          • 2016-03-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多