FC2ブログ
HOME   »  2011年05月
Archive | 2011年05月

スポンサーサイト

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

[Android]ProgressDialogのコンストラクタ引数Contextについて

Activityからメソッドを呼ぶ時に渡す引数Contextを指定する方法として、Activity自身を指すthisを指定する方法と、getApplicationContextメソッドで取得したContextを指定する方法の2通りがある(他にもまだあるかも?)。

ProgressDialogのコンストラクタも引数としてContextを渡す必要があるが、この場合getApplicationContextメソッドで取得したContextでは正常に動作しない為、thisを指定する必要がある。


スポンサーサイト

[Android]画面の向きを変えた時にActivityの状態を保持する

画面の向きを変える(縦→横/横→縦)と、通常はActivityが一旦破棄(onDestroy)された後再生成(onCreate)される為、Activityの状態が初期状態に戻ってしまう。

これを防止する為には、AndroidManifest.xml内のactivityタグにandroid:configChanges属性を追加すればよい。
<activity android:name="xxxxxxx.MainActivity"
          android:label="@string/app_name"
          android:configChanges="orientation">
android:configChanges属性でorientationを指定してやると、画面の向きが変わった時の処理はアプリケーション側で引き受ける、と宣言したことになり、勝手?にActivityが更新されてしまうことを防止できる。

(2011-05-30 追記)
画面の向きが変わった際、orientationのイベント以外にkeyboardHiddenのイベントも発生する場合があり、万全を期す為には、以下の様にorientationに加えてkeyboardHiddenも指定した方がよいかも(複数同時に指定する場合は、"|"で区切って併記する)。
<activity android:name="xxxxxxx.MainActivity"
          android:label="@string/app_name"
          android:configChanges="orientation|keyboardHidden">
尚、android:configChanges属性で指定したイベントが発生した時は、Activityが更新される代わりにonConfigurationChangedメソッドが呼ばれる為、このメソッドをオーバーライドすることにより、イベント発生時の処理をアプリケーション側で任意に実装することができる。


[Java]クラス配列

Javaでクラスを配列化する場合の注意点。

例えばHogeクラスを配列化する時に、
Hoge[] hoges = new Hoge[n];
だけだと、配列hogesの各要素はnullとなり、そのまま各要素のフィールドやメソッドにアクセスするとNullPointerExceptionが発生してしまう。

なので、
Hoge[] hoges = new Hoge[n];
for (int i = 0; i < hoges.length; i++) {
    hoges[i] = new Hoge();
}
として、各要素を個別にnewしてやる必要がある。


プロフィール

まさお

Author:まさお
プログラミングは趣味レベルなので、お手柔らかに。

ブログランキング
ブログランキング参加中。是非クリックお願いします。


にほんブログ村 IT技術ブログ Androidアプリ開発へ

人気ブログランキングへ

ブログランキング



ブログ王

ブログランキング【ブログの惑星】

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