web-dev-qa-db-ja.com

ActionBarSherlock-タイプAndroid.support.v4.app.Fragmentを解決できません。必要な.classファイルから間接的に参照されています

ライブラリ自体であるプロジェクトのライブラリプロジェクトとしてActionBarSherlockを使用しています。プロジェクトを新しいコンピューターに移動してSDKツールを更新するまで、すべて正常に機能していました。

理解できないこのエラーがあります。次のようにSherlockFragmentを拡張するクラスを作成すると:

import com.actionbarsherlock.app.SherlockFragment;

public class SomeFragment extends SherlockFragment {
    ... 
}

次のコンパイルエラーがあります。

The type Android.support.v4.app.Fragment cannot be resolved. It is indirectly referenced from required .class files

以下を確認しました。

  • ActionBarSherlockはライブラリとしてインポートされます
  • ビルドパスに明らかなエラー(赤十字なし)およびactionbarsherlock.jarが存在しない
  • サポートライブラリはActionBarSherlockプロジェクトにあり、他の依存プロジェクトにはありません

他に何か?

45
znat

SDKを更新してから、あなたと同じ問題がありました。私はこれを(Eclipseで)することで問題を解決しました:

  • アクションバーのシャーロックライブラリを右クリック=> Properties => Java Build Path => Order and Export tab =>チェックAndroid support v4またはAndroid Private Librariesおよび[OK]を選択します
  • 個人プロジェクトを右クリックして、プロパティに移動します=> Java build path => check Android Private Libraries
  • 両方のプロジェクトをきれいにすれば、うまくいくはずです。
67

Sebastienの答えは実際に私を解決に導いた。ただし、エクスポート用にサポートライブラリを確認できるようにするには、ビルドパスにサポートライブラリを手動で追加する必要があることに注意することが重要です。今後の参考のために、問題を解決した手順を以下に示します。

  1. サポートライブラリがABSプロジェクトのlibsフォルダーにあり、他の場所にないことを確認します。
  2. ライブラリを右クリック->ビルドパス->ビルドパスに追加
  3. ABSプロジェクトを右クリック->プロパティ-> Java Build Path-> Order and Export-> Android-support-v4.jarファイルを確認して保存
  4. ABSを含めたプロジェクトを右クリックします->プロパティ-> Java Build Path-> Order and Export-> Check "Android Private Libraries" and save
  5. 依存関係階層に追加のプロジェクトがある場合は、このプロジェクトすべてに対して手順4を実行します
  6. ワークスペース全体(または影響を受けるすべてのプロジェクト)をクリーンアップし、最善を期待します。

しかし、なぜこれがそんなに複雑でなければならないのかは謎です-Joshが述べたように、EclipseとAndroidおよびいくつかの依存関係を持つ大規模なプロジェクトを組み合わせて使用​​するのは困難です。近い将来改善されます。

11
endowzoner

私の場合、Androidサポートライブラリを必要とする2つのAndroidライブラリを使用しています。問題は、両方のライブラリに異なるバージョンのAndroidサポートライブラリがあったことです。

問題を解決するには:ライブラリプロジェクトを右クリック=> Androidツール=>サポートライブラリを追加します。

ライブラリごとにこのアクションを繰り返します。

10
Carlos

同じ問題がありました。 2つの異なるライブラリがありました。メインプロジェクトからサポートライブラリを削除する

8
SpeedEX505

最も簡単なソリューションは次のとおりです。

プロジェクトフォルダーを右クリック->ビルドパス->ビルドパスの構成->外部Jarsの追加(ライブラリタブから)->「Android-support-v4.jar」ファイルを選択します。

(Android SDKフォルダーは一般的なパス「Android-sdk\extras\Android\support\v4」です)にあります)。

この後、あなたはプロジェクトと幸せなコーディングをします...

4
Ahsanwarsi

私の場合、同じ問題に直面しました。プロジェクトを右クリックして解決しました-> Buid path-> Configure Build path-> "select Android from left hand list"-> "右側のパネルからプロジェクトターゲットをビルドするためのチェックボックス」-> [適用]をクリックし、[OK]をクリックします

1
Alok D

Android Studioを使用していて、同様の問題(ListFragmentのロード用)に直面しました。最初にライブラリをインポートしました:

import Android.support.v4.app.ListFragment;

そして、アプリのディレクトリ内のbuild.gradleを更新しました:依存関係セクションにサポートライブラリが含まれていることを確認してください-

  dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.Android.support:appcompat-v7:20.0.0 }
0
Dhwaneel

私はstackoverflowの初心者です。しかし、これはここでの私の解決策または経験です。これを解決するには、プロジェクトのプロパティ->左パネルの「Android」->追加->ドロップダウンメニューから必要なサポートライブラリを選択->「適用」-> OK

これで完了です。これは、「Android Private Libraries」がJava Build Path。

0
Achal Kagwad

私のために働いたのは、スレッドの@Sebastienと@FleshWoundによるソリューションとは少し異なっていました。

  • / MyProject/libs /からファイル「Android-support-v4.jar」をコピーし、/ ActionBarSherlock/libs/Android-support-v4.jarにあるファイルを上書きしました。
  • [プロジェクトプロパティ]-> [Javaビルドパス]-> [追加]-> ActionBarSherlockプロジェクトに移動しました。
  • きれいなプロジェクト。
0
Himadri Pant