The import android.support.v7.app cannot be resolved

Android

The import android.support.v7.app cannot be resolved

Android Developer Tools(Eclipse)で、新規のAndroidプロジェクトを作ろうとすると、いつからかActionBarActivityでActionBarを使うのがデフォルトになっていて、ActionBarActivityを使うためにいろんなエラーがバーっと出ます。

これからAndroidアプリをモリモリ作ってやろう!というやる気をいきなりそぎますね。

んで、まずブチ当たるのがこのエラーなんですが、

 The import android.support.v7.app cannot be resolved

次のようにやれば解決できます。

  1. プロジェクトを右クリックして、プロパティを開く
  2. Java Build Pathを開く
  3. Librariesを開く
  4. Add External JARsをクリック
  5. ADTの入っているディレクトリの中のsdk/extras/android/support/v7/appcompat/libs/の中のandroid-support-v7-appcompat.jarを指定する

ちなみにADTの入っているディレクトリがわからなくなった場合は→を見て下さい。Eclipse(Java版) インストールした場所を確認する方法

  1. Order and Exportタブに行き、先ほど追加したandroid-support-v7-appcompat.jarにチェック

ちなみに、この場合のターゲットバージョンなどは下記のようにしています。

 <uses-sdk
        android:minSdkVersion="13"
        android:targetSdkVersion="21" />

念のため、プロジェクトをclean→buildしてください。

しかし、これだけではエラーが終わらず、次のエラーにブチ当たるのでした…。
続き →the type android.support.v4.widget.DrawerLayout$DrawerListener cannot be resolved.

The import android.support.v4.app.NotificationManagerCompat cannot be resolved

Android

The import android.support.v4.app.NotificationManagerCompat cannot be resolved

Wearable端末にノーティフィケーションを送るクラスですが、これが上記のエラーで読み込めない場合があります。

それは
android-support-v4.jar
を読みこんでいないか、読み込んでも古くなっている場合です。

下記はGradle使っていない場合のやり方です。

  1. まずはAndroid SDK ManagerでAndroid SDKを更新します。
  2. SDKのディレクトリ+/extras/android/support/v4/にあるandroid-support-v4.jarをプロジェクトの中の /libsの中にコピペします。

古いものがある場合は、上書きです。

The hierarchy of the type Activity is inconsistent

Android

The hierarchy of the type Activity is inconsistent

体験談だけですが、また同じことが起こった時のために書いておきます。。。

AndroidのEclipseをSDK Toolsでアップデートしたら、このようなエラーが出るようになってしまいました。

Stackoverflowにはクラスパスの設定が悪い、とか書いてありますが

http://stackoverflow.com/questions/9633118/eclipse-the-hierarchy-of-the-type-is-inconsistent-with-configurable-annotat

そもそもクラスパスを変更もしていない…

そして、プロジェクトの設定を見ると、ライブラリを読み込めもしないし、追加もできないというおかしな状況に。

仕方ないので、Android SDKをダウンロードして、一から環境を作ったら、治りました…。
http://developer.android.com/sdk/index.html?hl=sk

The constructor AdRequest() is not visible

Android

The constructor AdRequest() is not visible

Android SDK Managerを利用して、環境をアップデートしたところ、Admobを利用している箇所で

 The constructor AdRequest() is not visible 

となってしまい、エラーが表示されるようになりました。

 AdRequest request = new AdRequest();

こういうところでコンストラクターが見れませんよ、ということになってしまったのです。

色々なことをやってみましたが、治りませんでした。
確かに、Adrequestのコンストラクタがprivateになっていました。

GoogleAdMobAdsSdk-6.4.1.jar内の
public final class com.google.ads.AdRequest で

 private AdRequest();

でした。

結局、今直せていないのですが、どなたか修正の情報がありましたら、教えてください。

後日談

この後、Runもできないようになって

 Conversion to Dalvik format failed: Unable to execute dex SDK Tools 22.3

ってエラーも出るようになっちゃったんですよ。

下記のStack Overflowさんに
http://stackoverflow.com/questions/19734152/conversion-to-dalvik-format-failed-unable-to-execute-dex-sdk-tools-22-3

However, the newest Google Play library includes ads and my guess would be that you are including both Admob and Google Play Services which apparently contain the same classes. In that case you should migrate your code to use the Google Play Service ads and remove the admob jar from your project.

とありまして、つまりGoogle PlayにAdmobが入ったので、Google Play Libraryを読み込んでいると、この衝突が起こるのではということでした。
ということは、

 AdRequest request = new AdRequest();

が見られないのも、Google Play Servicesのせい?

確かに、Google Play Serviceの中にAdRequestあるわ…。
https://developer.android.com/reference/com/google/android/gms/ads/AdRequest.html

com.google.android.gms.ads.AdRequest の中に入っているようです。

…結局弊社では、Admobで大した収入がないので、一旦Admob使わないという方針にしましたが、Admobを新しいGoogle Play Service内のクラスを利用するようにすれば、治るのかもね。

それにしても、ほんっとGoogleさんにはこういうのやめてほしいです[sad]

Taglist.vimを導入する

vim

vim Taglist Pluginを利用すると、関数一覧を表示できます。

手っ取り早くTaglist.vimを試してみるには、次の手順で導入できます。

ctags

Taglistの一覧を作成するには、ctagsが必要です。
Red Hat系Linuxでは下記コマンドでインストールできます。

 yum install ctags

vimからタグリストを作成するには、プロジェクトのトップディレクトリで下記コマンドを実行します。

 :!ctags -R

Taglist plugin ダウンロード

プラグインは下記URLからダウンロードできます。
http://www.vim.org/scripts/script.php?script_id=273

Taglist plugin インストール

ダウンロードしたファイルを展開して、~/.vimディレクトリ以下にコピーします。~/.vimディレクトリはなければ作成してください。

ディレクトリ構成は下記の通りになります。

 ~/.vim
 |-- doc
     |-- taglist.txt
 |-- plugin
     |-- taglist.vim

Taglistの設定

vimを起動し、:Tlist[enter]と入力するとtaglist pluginを実行されます。

project.vimと同時に使う場合は、関数一覧を右ペインに配置した方がつかいやすいかもしれません。関数一覧を右に配置する場合は

使ってみる

関数名の位置で[enter]を押すと、ソースコードの選択した関数の位置に移動します。