0
  • プラットフォーム: MonoDroid v4.2.4
  • IDE: ビジュアル スタジオ 2012
  • 最小 SDK バージョン: API 12

Android.Support.v4.Content 名前空間に含まれる LocalBroadcastManager クラスを利用しようとすると、実行時に問題が発生します。私の IDE では、参照を明示的に追加し、名前空間/クラスのスコープを適切に設定することができ、いくつかのコードを記述した後、期待どおりにコンパイルされます。ただし、アプリケーションのデプロイと起動時に、「NoClassDefFoundError: android/support/v4/content/LocalBroadcastManager」というエラーが表示されます。

ランタイム エラーを発生させるコードを次に示します (DSC_Discconected_From_Device は、BroadcastReceiver を継承するクラスです)。最終行で実行を停止します。

        IntentFilter filter = new IntentFilter(UsbManager.ActionUsbDeviceDetached);

        DSC_Disconnected_From_Device Receiver = new DSC_Disconnected_From_Device();

        LocalBroadcastManager.GetInstance(this).RegisterReceiver(Receiver, filter);

SDK マネージャーの下に、すべての API パッケージがインストールされ、extras の下の「サポート ライブラリ」パッケージもインストールされます。

クラスの定義をどこで探していますか? おそらく、ソースの LocalBroadcastManager.java を android-sdk フレームワーク内の「見える」パスにコピーしたと思われます。例: ..\android-sdk\extras\android\support\v4\src\honeycomb\android\support\v4\content\LocalBroadcastManager.java

アイデア?

編集:私のプロジェクトは、私のプロジェクトのルートにあるフォルダー「libs」にあるサポート ライブラリ android-support-v4 を既に参照していることを忘れていました。ディレクトリを作成し、Visual Studio から追加する必要がありました。

4

7 に答える 7

4

この問題はほぼ 6 か月間私を悩ませていましたが、解決策はありませんでしたが、今日、自分で正しい解決策を見つけることができました.

プロジェクトのターゲット バージョンを Android 4.0 以上に選択すると、Android SDK はプロジェクトの "libs" フォルダーに "android-support-v4.jar" ファイルを含めます。この jar には、Android 4.0 以降に関連するすべてのクラスとメソッドが含まれています。

Android は「android-support-v4.jar」にあるクラス定義を見つけようとしているため、「android-support-v4.jar」ファイルへのビルド パスが構成されていません。これを行うには、次の手順を実行します。

  1. プロジェクトのプロパティを開く
  2. 左側のメニューから「Java Build Path」を選択します
  3. 「ライブラリ」タブを選択
  4. 「外部jarを追加」を押します
  5. (最も重要なステップ) 現在のプロジェクトの場所から "libs" フォルダーの "android-support-v4" jar ファイルを選択します (パスは、Android SDK ではなく、プロジェクト フォルダーにある必要があります)。
  6. 「注文とエクスポート」タブを選択し、「android-support-v4.jar」のチェックボックスに「チェック」を入れます

これで完了です。

于 2013-09-17T07:13:14.167 に答える
1

Android facebook 統合でこのエラーが発生しました。その理由は、プロジェクトに android-support-v4.jar ライブラリを追加したためです。Facebook SDK は既にライブラリをサポートしています。そのため、ライブラリと Java ビルド パスの両方からサポート ライブラリを削除します。ライブラリを使用している場合は、既にサポート ライブラリが含まれています。

于 2013-11-04T15:32:41.503 に答える
1

Android Studio 0.8.2 で

アンドロイドスタジオ 0.8.2

Dependencies of Project-Structure タブで緑色の「+」を押してから、キーボード キー「1」(ライブラリの場合) を押して、v4+ ライブラリを選択します。

于 2014-07-30T08:46:32.393 に答える
0

Eclipse の場合は、サポート ライブラリ .jar ファイルを IDE の /libs ディレクトリに追加して、apk の作成時に Android パッケージャーがそれを apk に含めるようにする必要があります。

于 2012-09-26T12:57:38.303 に答える
0

>libsフォルダーにあるプロジェクトのandroid-support-v4.jarを、FacebookSDK> libsフォルダーにあるandroid-support-v4.jarに置き換えるだけです

于 2014-07-14T10:01:15.513 に答える
0

問題は android-support-v4.jar ライブラリの「プロパティ」に関連しているようです。

デフォルトでは、Visual Studio の詳細プロパティにリストされている「ビルド アクション」の値はContentでした。値をAndroidJavaLibraryに切り替えたところ、ランタイム エラーはなくなりました。

ただし、BroadcastReceiver は USB 切断インテントを受信して​​いません。うーん...この回答は適宜更新されます。

編集: LocalBroadcastReceiver を機能させることができなかったので、通常のものを使用する必要がありました。

于 2012-09-26T18:26:03.547 に答える