Невозможно вызвать getChildFragmentManager во фрагменте

Я строю андроидный проект с maven. Но я обнаружил, что когда вызываю getChildFragmentManager в v4.Fragment , он показывает ошибку, что этот метод не найден. Я сомневаюсь, что пакет support-v4 не является более новым, потому что, если я использую ant для создания моего проекта, все работает отлично.

Однако я не могу включить новую support-v4 в свой проект. Вот мой pom.xml

 <?xml version="1.0" encoding="utf-8"?> <project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelversion>4.0.0</modelversion> <groupid>com.meishixing</groupid> <artifactid>crazysight</artifactid> <version>1.0.0-snapshot</version> <packaging>apk</packaging> <name>crazysight</name> <properties> <project.build.sourceencoding>utf-8</project.build.sourceencoding> <fest-assert.version>1.0.4</fest-assert.version> <junit.version>4.10</junit.version> <robolectric.version>2.0</robolectric.version> <intellij.annotations.version>12.0</intellij.annotations.version> </properties> <dependencies> <dependency> <groupid>com.google.android</groupid> <artifactid>android</artifactid> <version>4.1.1.4</version> <scope>provided</scope> </dependency> <dependency> <groupid>com.viewpagerindicator</groupid> <artifactid>library</artifactid> <version>2.4.1</version> <type>apklib</type> </dependency> <dependency> <groupid>com.tjerkw</groupid> <artifactid>slideexpandablelistview-library</artifactid> <version>1.1.0-snapshot</version> <type>apklib</type> </dependency> <dependency> <groupid>com.meishixing</groupid> <artifactid>android-async-http</artifactid> <version>1.4.2</version> <type>jar</type> </dependency> <dependency> <groupid>com.meishixing</groupid> <artifactid>baidu-locationp</artifactid> <version>3.3</version> <type>jar</type> </dependency> <dependency> <groupid>com.google.code.gson</groupid> <artifactid>gson</artifactid> <version>2.2.4</version> <scope>compile</scope> </dependency> <dependency> <groupid>org.apache.commons</groupid> <artifactid>commons-lang3</artifactid> <version>3.1</version> </dependency> <dependency> <groupid>com.github.chrisbanes.pulltorefresh</groupid> <artifactid>library</artifactid> <version>2.1.1</version> <type>apklib</type> </dependency> <dependency> <groupid>com.novoda.imageloader</groupid> <artifactid>imageloader-core</artifactid> <version>1.5.8</version> </dependency> </dependencies> <build> <finalname>${project.artifactid}</finalname> <sourcedirectory>src</sourcedirectory> <plugins> <plugin> <groupid>com.jayway.maven.plugins.android.generation2</groupid> <artifactid>android-maven-plugin</artifactid> <version>3.6.2-snapshot</version> <configuration> <sdk> <platform>17</platform> </sdk> <manifest> <debuggable>true</debuggable> </manifest> </configuration> <extensions>true</extensions> </plugin> </plugins> </build> </project> при <?xml version="1.0" encoding="utf-8"?> <project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelversion>4.0.0</modelversion> <groupid>com.meishixing</groupid> <artifactid>crazysight</artifactid> <version>1.0.0-snapshot</version> <packaging>apk</packaging> <name>crazysight</name> <properties> <project.build.sourceencoding>utf-8</project.build.sourceencoding> <fest-assert.version>1.0.4</fest-assert.version> <junit.version>4.10</junit.version> <robolectric.version>2.0</robolectric.version> <intellij.annotations.version>12.0</intellij.annotations.version> </properties> <dependencies> <dependency> <groupid>com.google.android</groupid> <artifactid>android</artifactid> <version>4.1.1.4</version> <scope>provided</scope> </dependency> <dependency> <groupid>com.viewpagerindicator</groupid> <artifactid>library</artifactid> <version>2.4.1</version> <type>apklib</type> </dependency> <dependency> <groupid>com.tjerkw</groupid> <artifactid>slideexpandablelistview-library</artifactid> <version>1.1.0-snapshot</version> <type>apklib</type> </dependency> <dependency> <groupid>com.meishixing</groupid> <artifactid>android-async-http</artifactid> <version>1.4.2</version> <type>jar</type> </dependency> <dependency> <groupid>com.meishixing</groupid> <artifactid>baidu-locationp</artifactid> <version>3.3</version> <type>jar</type> </dependency> <dependency> <groupid>com.google.code.gson</groupid> <artifactid>gson</artifactid> <version>2.2.4</version> <scope>compile</scope> </dependency> <dependency> <groupid>org.apache.commons</groupid> <artifactid>commons-lang3</artifactid> <version>3.1</version> </dependency> <dependency> <groupid>com.github.chrisbanes.pulltorefresh</groupid> <artifactid>library</artifactid> <version>2.1.1</version> <type>apklib</type> </dependency> <dependency> <groupid>com.novoda.imageloader</groupid> <artifactid>imageloader-core</artifactid> <version>1.5.8</version> </dependency> </dependencies> <build> <finalname>${project.artifactid}</finalname> <sourcedirectory>src</sourcedirectory> <plugins> <plugin> <groupid>com.jayway.maven.plugins.android.generation2</groupid> <artifactid>android-maven-plugin</artifactid> <version>3.6.2-snapshot</version> <configuration> <sdk> <platform>17</platform> </sdk> <manifest> <debuggable>true</debuggable> </manifest> </configuration> <extensions>true</extensions> </plugin> </plugins> </build> </project> , <?xml version="1.0" encoding="utf-8"?> <project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelversion>4.0.0</modelversion> <groupid>com.meishixing</groupid> <artifactid>crazysight</artifactid> <version>1.0.0-snapshot</version> <packaging>apk</packaging> <name>crazysight</name> <properties> <project.build.sourceencoding>utf-8</project.build.sourceencoding> <fest-assert.version>1.0.4</fest-assert.version> <junit.version>4.10</junit.version> <robolectric.version>2.0</robolectric.version> <intellij.annotations.version>12.0</intellij.annotations.version> </properties> <dependencies> <dependency> <groupid>com.google.android</groupid> <artifactid>android</artifactid> <version>4.1.1.4</version> <scope>provided</scope> </dependency> <dependency> <groupid>com.viewpagerindicator</groupid> <artifactid>library</artifactid> <version>2.4.1</version> <type>apklib</type> </dependency> <dependency> <groupid>com.tjerkw</groupid> <artifactid>slideexpandablelistview-library</artifactid> <version>1.1.0-snapshot</version> <type>apklib</type> </dependency> <dependency> <groupid>com.meishixing</groupid> <artifactid>android-async-http</artifactid> <version>1.4.2</version> <type>jar</type> </dependency> <dependency> <groupid>com.meishixing</groupid> <artifactid>baidu-locationp</artifactid> <version>3.3</version> <type>jar</type> </dependency> <dependency> <groupid>com.google.code.gson</groupid> <artifactid>gson</artifactid> <version>2.2.4</version> <scope>compile</scope> </dependency> <dependency> <groupid>org.apache.commons</groupid> <artifactid>commons-lang3</artifactid> <version>3.1</version> </dependency> <dependency> <groupid>com.github.chrisbanes.pulltorefresh</groupid> <artifactid>library</artifactid> <version>2.1.1</version> <type>apklib</type> </dependency> <dependency> <groupid>com.novoda.imageloader</groupid> <artifactid>imageloader-core</artifactid> <version>1.5.8</version> </dependency> </dependencies> <build> <finalname>${project.artifactid}</finalname> <sourcedirectory>src</sourcedirectory> <plugins> <plugin> <groupid>com.jayway.maven.plugins.android.generation2</groupid> <artifactid>android-maven-plugin</artifactid> <version>3.6.2-snapshot</version> <configuration> <sdk> <platform>17</platform> </sdk> <manifest> <debuggable>true</debuggable> </manifest> </configuration> <extensions>true</extensions> </plugin> </plugins> </build> </project> 

Я был в шоке от этого в течение нескольких часов (вот почему я также добавил щедрость), но вот как я, наконец, решил это.

Прежде всего, проверьте зависимости вашего пути к классу

 mvn dependency:build-classpath 

Я мог сразу увидеть проблему в выходе:

 <home>/.m2\repository\android\extras\android-support\v4\android-support-v4.jar <home>/.m2\repository\android\platforms\android\android-18\android-android-18.jar <home>/.m2\repository\com\actionbarsherlock\actionbarsherlock\4.4.0\actionbarsherlock-4.4.0.apklib <home>/.m2\repository\com\google\android\support-v4\r7\support-v4-r7.jar <... more jars> , <home>/.m2\repository\android\extras\android-support\v4\android-support-v4.jar <home>/.m2\repository\android\platforms\android\android-18\android-android-18.jar <home>/.m2\repository\com\actionbarsherlock\actionbarsherlock\4.4.0\actionbarsherlock-4.4.0.apklib <home>/.m2\repository\com\google\android\support-v4\r7\support-v4-r7.jar <... more jars> 

В комплект включены два баночки поддержки, а support-v4-r7.jar переопределяет мою новую support-v4-r7.jar android-support-v4.jar .

Более старый был загружен ActionBarSherlock в моем проекте (в вашем проекте виновником может быть любая из зависимостей apklib), поэтому я исключил его в моем проекте pom:

 <dependency> <groupId>com.actionbarsherlock</groupId> <artifactId>actionbarsherlock</artifactId> <version>4.4.0</version> <type>apklib</type> <exclusions> <exclusion> <groupId>com.google.android</groupId> <artifactId>support-v4</artifactId> </exclusion> </exclusions> </dependency> 

Надеюсь, это помогает кому-то.