2010年5月21日金曜日

[Androidアプリ]今度はNullPointerException

xmlファイルの部分で少し時間を食ったものの、無事サンプルコードが動いて一安心。

したのもつかの間。
その後、ソースコードを直して動きを確認しようと「実行」を押すとエラーが。

ダイアログには
「Java.lang.NullPointerException:"xxx起動"中に内部エラーが発生しました。」
というようなメッセージが表示されている。

何がNull?
エミュレータは起動してあるし・・・。

さっきリファクタリングした時に
------------------------------------------------------------------------------------------------
org.eclipse.core.internal.resources.ResourceException: リソース '/xxx が存在しません。
at org.eclipse.core.internal.resources.Resource.checkExists(Resource.java:319)
at org.eclipse.core.internal.resources.Resource.checkAccessible(Resource.java:196)
at org.eclipse.core.internal.resources.Project.checkAccessible(Project.java:113)
at org.eclipse.core.internal.resources.Project.hasNature(Project.java:489)
at com.android.ide.eclipse.adt.internal.project.FolderDecorator.decorate(Unknown Source)
at org.eclipse.ui.internal.decorators.LightweightDecoratorDefinition.decorate(LightweightDecoratorDefinition.java:263)
at org.eclipse.ui.internal.decorators.LightweightDecoratorManager$LightweightRunnable.run(LightweightDecoratorManager.java:81)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.ui.internal.decorators.LightweightDecoratorManager.decorate(LightweightDecoratorManager.java:365)
at org.eclipse.ui.internal.decorators.LightweightDecoratorManager.getDecorations(LightweightDecoratorManager.java:347)
at org.eclipse.ui.internal.decorators.DecorationScheduler$1.ensureResultCached(DecorationScheduler.java:371)
at org.eclipse.ui.internal.decorators.DecorationScheduler$1.run(DecorationScheduler.java:331)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
------------------------------------------------------------------------------------------------
というエラーが多発していたけど、このリソースのことかな?

比較のために新規プロジェクトを作成して、足りない部分を探してみる。
しかし、名前が違う以外は足りないものは無さそうだ。

エラーログには、
------------------------------------------------------------------------------------------------
java.lang.NullPointerException
at com.android.sdklib.AddOnTarget.isCompatibleBaseFor(AddOnTarget.java:230)
at com.android.sdkuilib.internal.widgets.AvdSelector$TargetBasedFilter.accept(AvdSelector.java:170)
at com.android.sdkuilib.internal.widgets.AvdSelector.fillTable(AvdSelector.java:727)
at com.android.sdkuilib.internal.widgets.AvdSelector.refresh(AvdSelector.java:432)
at com.android.ide.eclipse.adt.internal.launch.EmulatorConfigTab.updateAvdList(Unknown Source)
at com.android.ide.eclipse.adt.internal.launch.EmulatorConfigTab.initializeFrom(Unknown Source)
at org.eclipse.debug.ui.AbstractLaunchConfigurationTab.activated(AbstractLaunchConfigurationTab.java:354)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.handleTabSelected(LaunchConfigurationTabGroupViewer.java:1323)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer$6.widgetSelected(LaunchConfigurationTabGroupViewer.java:434)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1027)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1012)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:770)
at org.eclipse.swt.custom.CTabFolder.setSelection(CTabFolder.java:3256)
at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:2045)
at org.eclipse.swt.custom.CTabFolder$1.handleEvent(CTabFolder.java:323)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
------------------------------------------------------------------------------------------------
と、
------------------------------------------------------------------------------------------------
java.lang.NullPointerException
at com.android.sdklib.AddOnTarget.isCompatibleBaseFor(AddOnTarget.java:230)
at com.android.sdkuilib.internal.widgets.AvdSelector$TargetBasedFilter.accept(AvdSelector.java:170)
at com.android.sdkuilib.internal.widgets.AvdSelector.fillTable(AvdSelector.java:727)
at com.android.sdkuilib.internal.widgets.AvdSelector.refresh(AvdSelector.java:432)
at com.android.ide.eclipse.adt.internal.launch.EmulatorConfigTab.updateAvdList(Unknown Source)
at com.android.ide.eclipse.adt.internal.launch.EmulatorConfigTab.initializeFrom(Unknown Source)
at org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup.initializeFrom(AbstractLaunchConfigurationTabGroup.java:86)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupWrapper.initializeFrom(LaunchConfigurationTabGroupWrapper.java:194)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.displayInstanceTabs(LaunchConfigurationTabGroupViewer.java:804)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer$8.run(LaunchConfigurationTabGroupViewer.java:680)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.inputChanged(LaunchConfigurationTabGroupViewer.java:697)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.setInput0(LaunchConfigurationTabGroupViewer.java:659)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.setInput(LaunchConfigurationTabGroupViewer.java:635)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog.handleLaunchConfigurationSelectionChanged(LaunchConfigurationsDialog.java:916)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog$3.selectionChanged(LaunchConfigurationsDialog.java:544)
at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:864)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.runtime.Platform.run(Platform.java:888)
------------------------------------------------------------------------------------------------
の2つのメッセージが出ているがエミュレータへのランチャのところだろうか。

「実行構成」を開いてみるといきなりダイアログが表示されて、またもやNullPointerException。
実行構成から参照している部分が何か無いようだ。

結局、原因ははっきりとわからなかったが、メインのActivityを指定すると都度NullPointerExceptionを告げるダイアログが表示されたことから、このActivityが無い(?)か参照先がおかしくなっている模様。
解決方法を探ってみたがこんなことでハマってる人はいないようで、これという解決方法が見つからなかったので以下の力業で実行できるようにした。無理やり。

(1)プロジェクト一式を退避させる。
(2)新規プロジェクトを作成する。(前のプロジェクトと違う名前にする)
(3)ソース&リソース、設定ファイル等を全部新規プロジェクトに移し変える。
(4)必要な部分を修正。

こうしてNullPointerExceptionが発生して、動作確認が出来ない事態は避けられた。
だが、解決方法がはっきりしていない以上、発生する度にこんなことするのは時間の無駄だしどうしたものか。

[Androidアプリ]xmlファイル書き換えるとEclipseでエラー

Androidアプリで画面遷移時のスライドアニメーションをやってみようと

「throw Life:ActivityのOpenとCloseをアニメーションさせる」
http://www.adamrocker.com/blog/289/activity_open_close_animation.html

を参考にxmlファイルをいじっていたところ、実行時にエラーが。

-------------------------------------------------------------------------------------------------
17:51:04,593 FATAL [main] Main - No embedded stylesheet instruction for file: file:/C:/work/eclipse/workspace/TestXperiaApp/res/values/styles.xml
org.eclipse.wst.xsl.jaxp.debug.invoker.TransformationException: No embedded stylesheet instruction for file: file:/C:/work/eclipse/workspace/TestXperiaApp/res/values/styles.xml
at org.eclipse.wst.xsl.jaxp.debug.invoker.internal.JAXPSAXProcessorInvoker.transform(JAXPSAXProcessorInvoker.java:225)
at org.eclipse.wst.xsl.jaxp.debug.invoker.internal.JAXPSAXProcessorInvoker.transform(JAXPSAXProcessorInvoker.java:186)
at org.eclipse.wst.xsl.jaxp.debug.invoker.internal.Main.main(Main.java:73)
Caused by: org.eclipse.wst.xsl.jaxp.debug.invoker.TransformationException: No embedded stylesheet instruction for file: file:/C:/work/eclipse/workspace/TestXperiaApp/res/values/styles.xml
at org.eclipse.wst.xsl.jaxp.debug.invoker.internal.JAXPSAXProcessorInvoker.transform(JAXPSAXProcessorInvoker.java:214)
... 2 more
-------------------------------------------------------------------------------------------------

「styles.out.xml」なるファイルが真っ白で残っていました。
困ったことに何度やっても同じエラー。
「styles.out.xml」を削除しても出てしまいます。

悩んだ末にリファクタリングでプロジェクト名を変更して、また戻したらエラーが出なくなりました。
原因はどこにあったのだろう・・・。


開発環境:Eclipse 3.5.1 + Xperia X10スキン

2010年5月20日木曜日

Androidアプリ開発 覚え書き[5/20]

Androidの開発環境は以前に構築していましたが、訳あって急に触ることになりました。

Xperia X10のスキンを入れて、いざAndroidプロジェクトを作成!
そして、実行!

[2010-05-20 17:34:51 - TestXperiaApp]Error in an XML file: aborting build.
[2010-05-20 17:34:51 - TestXperiaApp]res\layout\main.xml:0: ERROR Resource entry main is already defined.
[2010-05-20 17:34:51 - TestXperiaApp]res\layout\main.out.xml:0: Originally defined here.
[2010-05-20 17:34:51 - TestXperiaApp]C:\work\eclipse\workspace\TestXperiaApp\res\layout\main.out.xml:1: ERROR Error parsing XML: no element found

・・・何かエラー出た。
xmlの記述が悪いのかと色々触ってみるも効果なし。

悩んだ末にXperiaのエミュレータを起動してから「実行」をしてみたら動きました。
えー。
そういうことー。

自分にがっかり(笑)

それにしても、Xperiaエミュレータの起動が遅いのは私だけでは無いみたいですね。
起動まで5分近くかかるとか、最初フリーズしてると思いましたもん。
皆様もお気をつけあれ。

2010年4月8日木曜日

Excelのセル表示が「#######」となる問題

たまにExcelを使っているとセル表示が「##################」となることがあります。
何だこれ?と思っていたのですが、解決策がわかったのでメモっておきます。

【現象】
Excelシートのセル表示が「###############」となる。

【原因】
セルの中の文字列が256〜1024文字であるため。

【解決方法】
セルの書式設定で「文字列」⇒「標準」に変更すると文字が表示されます。
255文字以下、または1025文字以上の場合は発生しません。


変な仕様だなぁ(笑)

2010年3月3日水曜日

P-01Aのサポートするフォントサイズ

エミュレータで動くのに、実機だと画面の文字が出なかったり画面がフリーズするので首をかしげていたら、こんな初歩的なミス。

指定したフォントサイズが対応してないという罠。
ありがちです。
自分のためにもメモしておきます。

【P-01Aの対応フォントサイズ】
12, 16, 20 ,24, 30, 32, 48, 60, 96 (pt)

エミュレータ(DoJa5.1)だと対応フォントサイズは、
12, 16, 24, 30, 48, 64 (pt)

なぜ、64ptだけ無いのだー。
8の倍数だというのに。

2010年2月4日木曜日

TortoiseSVNのリポジトリの移動

TortoiseSVNをローカルのファイル管理に使い始めて、最初に出くわした壁がタイトルの内容。
「リポジトリの移動」です。
他のWebサイトを参考にしたのですが、「再配置」したらいいとか、設定ファイルのパスを変更しなきゃダメだ!など色々書いてあったのですが・・・

結論から言うと、移動先にリポジトリフォルダごとコピー(念のためバックアップ)して、参照先をそちらに変更すると出来ました。

「再配置」をするとUUIDが違うぜエラーが出てしまい、設定ファイルのパスはどこをどれだけ変更したらいいのかわからず(笑)
本当にこれでよかったのかどうかはわかりませんが、移動前のバージョンにも戻せたのでおそらくOK・・・!?かと。
ローカルだったからかな。

TortoiseSVNの導入

バージョン管理ツール「subversion」。
最近、「subversion」ツールである「TortoiseSVN」を導入しました。
ローカルのみ使用中。
便利です、ええ。

ところがダウンロードしようとするとフリーズするMy IE6.0。
会社からのお達しとはいえ、いまだIE6.0なのが悪いような気もしますが。

「TortoiseSVN」ダウンロードページ
http://tortoisesvn.net/downloads

このページにあるmsi拡張子のリンクをクリックすると、SorceForgeのダウンロードページに飛びます。
飛んだ先で少しでも画面を下スクロールすると、もれなくIE6.0が落ちるのですが(私の環境の場合)、画面上部に表示される文章内にある「direct link」の文字をクリックすると、落ちるより先にダウンロードが開始されるようです(苦笑)

同じく上のダウンロードページを下の方へスクロールすると、各国の言語パックへのリンクがあるので「Japanese」にあるリンクをクリックして、同じく飛んだ先で「direct link」!

これで無事インストールが出来るようになります。