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

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)アプリ開発術

コメント

このブログの人気の投稿

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で一通り基本的なGitを使ってみる

備忘録的にまとめておきたいと思います。おかしな点があればご指摘いただければ幸いです。 目次 環境 プロジェクト作成~初コミットまで コミットの履歴&差分を見る 元に戻す ブランチについて ブランチを作成してみる ブランチを統合するには マージする Rebaseする ローカルリポジトリからプロジェクトを取り込む コミットしたメッセージの修正 環境 Eclipse IDE for Java Developers:Juno Service Release 1 Git:上記Eclipseのプリインストール版

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); } }