戌印-INUJIRUSHI- (Androidあれこれ)

Androidのプログラミングをメインにしてます。記事に貼られたソースコードはダブルクリックすることで行番号をはずしてコピーすることができます。

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
20
21
22
23
24
25
26
27
29
30
09

スポンサーサイト

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

アラートダイアログ:AlertDialog

AlertDialog は画面にダイアログを表示します。

API Reference: AlertDialog, AlertDialog.Builder

■ 画面イメージ -----------------------------------------------
android_AlertDialog.png

■ AlertDialog 注意事項 ---------------------------------------
AlertDialogを表示するには、直接ダイアログを表示する方法と、アクティビティ管理下で表示する Activity#showDialog(int) の2種類の方法が存在します。
アクティビティ下で表示するのが一般的な方法ですが、ここでは直接ダイアログを表示する方法で説明します。

【注意】直接ダイアログを表示すると、端末の向きを変えたときに内部でエラーが発生し、ダイアログが閉じてしまいます。
※この問題は、端末の向き変更時に発生する初期化処理を停止することで対処できます。
⇒ AndroidManifest.xml の <activity> に android:configChanges="orientation|keyboardHidden" と指定

■ ソースコードで定義 -----------------------------------------
package jp.inujirushi.sample.activity;

import jp.inujirushi.sample.R;
import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class DialogActivity extends Activity {
/** アクティビティを生成した時に呼ばれます。 */
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sample_dialog);

// ボタンのクリックイベントにダイアログ表示を設定する
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// ダイアログ作成クラスを生成する
AlertDialog.Builder builder = new AlertDialog.Builder(
DialogActivity.this);
// ダイアログにタイトルを設定する
builder.setTitle("タイトル");
// ダイアログにメッセージを設定する
builder.setMessage("メッセージ");
// ダイアログにOKボタンを設定する
builder.setPositiveButton("OK", null);
// ダイアログを生成する
AlertDialog dialog = builder.create();
// ダイアログを表示する
dialog.show();
}
});
}
}

スポンサーサイト

Android トラブルシューティング

EclipseでAndroidアプリを開発している時に、ソースコードに問題は無いはずなのにエラーが発生してコンパイルできなくなる時があります。
以下は、私が開発中に発生したエラーを取りまとめたものです(発見次第追加)
----------------------------------------------------------------------
エラー説明の前に…
大抵の場合、Eclipseを再起動すれば直ります。
それでも駄目ならEclipseを -clean 実行。9割方これで直ります。
----------------------------------------------------------------------
Conversion to Dalvik format failed: Unable to execute dex: wrapper was not properly loaded first
Dalvikのフォーマットへの変換に失敗しました:DEXを実行できません:ラッパーが適切に最初にロードされていない

対処法:
①Eclipseを再起動
②メニューの[プロジェクト(P)] - [クリーン(N)...]
----------------------------------------------------------------------
invalid command-line parameter
無効なコマンドラインパラメータ

エミュレータ起動時に発生する。
以前は発生しなかったが、SDKをアップデートしたら発生するようになりました…

対処法:
①android-sdkフォルダをスペースの無いフォルダ階層に移動する

× C:\Program Files\Java\android-sdk-windows
○ C:\eclipse\android-sdk-windows
----------------------------------------------------------------------
This Android SDK requires Android Developer Toolkit version 14.0.0 or above.
Current version is 11.0.0.v201105251008-128486.
Please update ADT to the latest version.

*
This Android SDK requires Android Developer Toolkit version 17.0.0 or above.
Current version is 16.0.1.v201112150204-238534.
Please update ADT to the latest version.


Android SDK のアップデートを行った時に発生。
Android Developer Toolkit (ADT) のバージョンが古いので更新してください。

※このエラーが発生すると Android SDK Manager は実行できなくなります。

対処法:
①Eclipseのメニュー [ヘルプ(H) - 更新の確認] から更新。
②以下を最新にアップデートする
・Android DDMS
・Android 開発ツール
・Android Hierarchy Viewer
・Android Traceview
③Eclipse再起動
----------------------------------------------------------------------
エラーが発生しました。詳細については、エラー・ログを参照してください。
com.android.sdkuilib.internal.widgets.SdkTargetSelector.access$000
(Lcom/android/sdkuilib/internal/widgets/SdkTargetSelector;)Z


Android SDK Manager のアップデート後などに発生。

対処法:
①Eclipseを終了する。
②eclipse.exe -clean で起動する
----------------------------------------------------------------------
Obsolete proguard file; use -keepclasseswithmembers instead of -keepclasseswithmembernames proguard.cfg
proguard.cfg が旧式: -keepclasseswithmembernames の代わりに -keepclasseswithmembers を使え

ADT 16 から導入された Run Android Lint によるソースチェックによるエラー。

参考サイト:Gamekozo's Library - Androidでapk出力エラー

対処法:
①keepclasseswithmembernames → keepclasseswithmembers に修正
※新プロジェクトを作成して proguard.cfg をコピーでも可(自分はコレで対応)
②次回 Eclipse起動時に同じエラーが出た場合、[ウィンドウ(W)] - [Run Android Lint] でエラーが消える
----------------------------------------------------------------------
java.lang.NoClassDefFoundError
(外部Jarの)クラスパスが通っていないためエラーが発生。

ADT 17 以降、外部Jarは libs フォルダでのみ管理されるようになったために発生。
.jar ファイルを libs フォルダに入れるだけで勝手に組み込まれるようになりました。
ビルド・パスは無視されます。
ADT 16 以前であればビルド・パスの漏れ。

参考サイト:Yet Another Diary - Androidで外部JarがAPKファイルに取り込まれなくなった時の対処法

対処法:
①ビルド・パスから追加したJarを削除する
②外部Jar を libs フォルダに移動する
----------------------------------------------------------------------
プロフィール

とむ・やむくん

Author:とむ・やむくん
管理人について

Windows 7 / 64bit
Eclipse 4.2 Juno (日本語パッチ済)

スポンサーサイト
最新トラックバック
検索フォーム
ブロとも申請フォーム
QRコード
QR
Twitter
2013/01/04 19:00 カウント開始

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