スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Android Compatibility Package を探し求めて

事の発端からPackageを見つけるまでを、時系列にまとめてみた。

勉強用Androidアプリにダイアログを追加する。

ダイアログ表示後backするとメモリリークして異常終了。Dialog.show()で表示したのがダメみたいだ。
きちんとShowing a Dialog | Android Developersに従って、Activity.showDialog()で表示しよう。

リファレンスを見るとActivity.showDialogはdeprecated(非推奨)。DialogFragmentを使いなさいと書いてある。
しかしDialogFragmentはAPI level 11(Android 3.0)以上でなければ使えない。

Android Compatibility Packageを使えばAPI level 4(Android 1.6)以上でもFragmentsが使える。
Android Compatibility packageで2.x系でもマルチサイズ対応
に従ってAndroid Compatibility Packageをインストールしようとする。

しかし、Android Compatibility Packageが見当たらない。記事には「Android SDK and AVD Manager」とあるが、自分の環境は「Android SDK Manager」だし何か違うのか?

Android Compatibility Packageは、2011年10月のrevision 4からAndroid Support Packageに名称変更されていた。
Android SDK Managerから普通にインストールできる。

Setting Up a Project to Use a Libraryに従ってandroid-support-v4.jarにBuild Pathを通した時点で時間切れ。
続きは明日にしよう。
スポンサーサイト

[Android]インタフェースの実装で@Overrideを記述するとエラーになる

Androidアプリ開発の勉強はじめました。

サンプルプログラムをいじっているのだが、Overrideアノテーションがコンパイルエラーになった。
private OnClickListener StartListener = new OnClickListener() {
    @Override
    public void onClick(View v) {
        // 略
    }
};
「インタフェースのメソッドを実装(implements)するときは@Overrideを書いちゃダメだよ」とのこと。

ネットで調べたところ、eclipseのコンパイラーレベルを1.6以上にすれば良いらしい。
Window→PreferencesからJava→Compilerと選択してCompiler compliance levelを確認したが、1.7だ。試しに1.6にしても相変わらずエラーになる。

更に調べたところ、プロジェクトのコンパイラーレベルを変更しなければならないことがわかった。
Project→PropertiesからJava Compilerを選択してCompiler compliance levelを確認したら1.5だった。
1.7に変更したところ、Android requires compiler compliance level 5.0 or 6.0. というエラーが。
1.6に変更したら無事にコンパイルできた。
(JDK7だとリリース時にantをリビルトするとか面倒な事が必要らしい。JDK6で開発するかな)

それにしても、「Window→Preferencesからコンパイラーレベルを変えてね」という日本語情報はすぐに見つかったのだが、「Project→Propertiesから変えてね」は英語情報しか見つけられなかった。

とここまで書いてから、念のため「android override エラー」で検索したら、このエントリとほぼ同内容の日本語情報がすぐに見つかった。
でもせっかく書いたから公開する。
プロフィール

himax64

Author: 南西
30代後半の無職です。
就活もせずダラダラ生きてます。
作ったもの

最新記事
人気記事
検索フォーム
カテゴリ
月別アーカイブ
最新コメント
最新トラックバック
RSSリンクの表示
QRコード
QRコード
カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。