スキップしてメイン コンテンツに移動

ActionBarSherlockの導入が一筋縄にいかなかったのでメモ

Pattern Calendarを作った時は、このライブラリの存在を知らなかったので、Android 2.xとICSとかと表示が違いなどに困っていましたが、とても有り難いライブラリということで、早速使ってみることにしました。

こちらを参考に
・Android 2.xでAction Barが使えるActionBarSherlockの使い方 - gabuchanの日記
http://d.hatena.ne.jp/gabuchan/20120227/1330302592
Githubはリンク切れてたので、入手先はこちらから
・ActionBarSherlock - Home
http://actionbarsherlock.com/index.html

@Overrideのエラー


まず、ライブラリをAndroid applicationのプロジェクトとして取り込むと、エラーが出ます。



ソース内の@Overrideの所でエラーが出ています。Eclipseの設定を開いて、Java CompilerにJava1.5を使ってるのが問題で、1.6にすれば解決できます。




android-support-v4.jarがかぶる


で、先の解説の通り、自分のアプリを
import com.actionbarsherlock.app.SherlockActivity;

public class MainActivity extends SherlockActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
     setTheme(R.style.Theme_Sherlock);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

と修正して、ビルドをかけるとソースに問題がないのにエラーが残ってます。



Jar mismatch! Fix your dependencies HelloActionBar Unknown Android Dependency Problem

エラーには上記のように表示されています。これは、ライブラリ側と自分のアプリに、android-support-v4.jarが存在しているのが問題のようです。パッケージエクスプローラーから自分のアプリのlibsディレクトリに入っているandroid-support-v4.jarを削除する事で解決できます。



テーマの適用


先ほどのソースで、setThemeの部分でテーマが適用されています。注意点としては、super.onCreteの後に書いてしまうとExceptionが出てしまいます。また、setThemeをしなくても、AndroidManifest.xmlの

android:theme="@style/AppTheme"
android:theme="@style/Theme.Sherlock.Light.DarkActionBar"

のように書き換えてもテーマを適用できます。

適用例




ただ、このように、Android2.x~Android4.1対応でライブラリを適用してしまうと、Hello world!と表示するけだでも、1MBを超えてしまいます。


[参考]
Android 2.xでAction Barが使えるActionBarSherlockの使い方 - gabuchanの日記
android - Greendroid or ActionbarSherlock - setup - Stack Overflow
@Override annotation used wrongly · Issue #28 · JakeWharton/ActionBarSherlock
Problem "JAR mismatch! Fix your dependencies." - Google グループ
android - ActionBarSherlock: java.lang.NoClassDefFoundError: com.actionbarsherlock.R$styleable - Stack Overflow

[PR]
AndroidアプリUIデザイン&プログラミング  アイデア固めからユーザーフィードバック分析まで
Android UI Cookbook for 4.0 ICS(Ice Cream Sandwich)アプリ開発術

コメント

このブログの人気の投稿

Javaでprivateなfieldやmethodにアクセスする

JUnitでテストしてると、privateなフィールドにアクセスして、値を参照したりセットしたりしたくなるわけですが、よく使うのでメモしておきます。 例えば、次のような対象のクラスがあるとします。 public class ParentClass { private String hoge = "ParentClass!!"; public void dispMsg() { System.out.println("dispMsg:" + hoge); } private void privateDispMsg(String msg) { System.out.println("dispMsg:" + msg); } }

GolangでWindows GUIアプリケーション

GUIアプリ作成の前提 社内ツールとしてexeで配布 開発環境はGoLandを使う 社内ツールとしてexeを配布ということであれば、Visual StudioでC#による開発だと思います。しかしながら、Go言語を習得したいのと、GoLandの補完機能が便利で、Android Studio使っていたこともあり、とっつきやすいという点からGo縛りでGUIアプリケーションを考えたいと思います。 lxn/walk Windows application library kit for Go. Windows向けしか考えていないので、まずこのライブラリなのですが、ボタンやコンボボックスが思ったように並ばなかったり、手軽にイメージボタンを配置したりなど、簡単にレイアウトを変更できない課題に直面しました。レイアウト作成だけで時間を取られてしまいます。そう言えば、Androidアプリ開発のときは、XMLでデザイン部分を切り離してたのを思い出して、今回の調査の運びとなりました。 fyne-io/fyne Cross platform native GUIs designed for Go based on Material Design. Supports: Linux, macOS, Windows, BSD, iOS and Android. walkと比べると、クロスプラットフォームで作成できるのですが、こちらもコードの中にデザインを書いていく形でした。 therecipe/qt therecipe/qt allows you to write Qt applications entirely in Go or JavaScript. Qt Creatorなるものがあるようで、デザイン部分を切り離せる印象はあるものの、最新のPCでもビルドに時間がかかるようで、学習コストもかかるという記事を見かけて断念しました。 どうしたものかとツイートしましたら、下記のようにご助言をいただいた。 同じ課題に対し色々試した結果、PWAのフルキャッシュドに落ち着いた。中身はGo+WASMで。 https://t.co/e60whDTV16 — のぼのぼ📡 (@nobonobo) July 21, 2020 PWA 早速調べてみました。Googleが進めているプロジェクトで、ネイティブアプリのよ

Eclipseの高速化メモ

Eclipseが重いと一言に言っても、いろいろな工程での話があると思いますが、過去記事のなども含めてこの記事にピックアップしておきたいと思います。以下はWindows環境での話です。