Activity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView

Android

Activity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView

AlertDialog.Builderを利用して、

 alert = alertDialogBuilder.create();
 alert.show();

とやっていると、アラートダイアログを消さないままにたとえば違うアクティビティに遷移した場合などにWindow leakが起こります。

 alert.dismiss();

とかやればいいのかな?
と思ったところ、dismissはAlertDialogクラスにはないんですね。

Activityに実装されている、

 showDialog(0); //0は実行したいアラートの番号

を利用すればいいよ、と下記のサイトさんで掲載されていたので、大変助かりました。有難うございました。

http://androidr.sblo.jp/article/44022356.html

Activity has leaked window com.android

Android

Activity has leaked window com.android

上記のエラーが出て、Androidアプリが強制終了してしまうのは、アラートダイアログを表示している時に、onPauseなどで画面が一旦消えた際に、dismiss();
を呼んでアラートダイアログを消去していないからです。

 @Override
 protected void onPause() {
  	
   if(dialog !=null ){
     dialog.dismiss();
   }
 	
 }

こんな風にダイアログを消しておきましょう。

ActionScript 3.0 setChildIndexしたあと別フレームに移動する

Flash

ステージに配置したシンボルのインスタンスをsetChildIndexで重なり順を変更したあと、gotoAndPlayやgotoAndStop等で他のフレームに移動すると、setChildIndexで指定したインスタンスが、移動先フレームに残ったままになり、様々な不具合の原因になってしまいます。

GUIでステージ上に設置したシンボルは、他のフレームに移動したときに、コード側で明示的にremoveChildしなくても、自動的に削除されますが、setChildIndexを実行するとインスタンスの状態が変化するようで明示的なremoveChildが必要になります。

コード例

 var prev_frame:uint = this.currentFrame;
 
 addEventListener(Event.ENTER_FRAME, loading);
 
 function loading(evt:Event):void
 {
     if(this.currentFrame != prev_frame)
      {
          if (this.contains(childname)) {
               this.removeChild(childname);
          }
      }
 }

他にはMOUSE_CLICKイベントやMOUSE_UPイベントでremoveChildする関数をフレームごとにaddEventListenrで登録する方法があります。

参考リンク
http://stackoverflow.com/questions/5148484/flashas3-setchildindex-problems

Access データベースをパスワードで保護する

Office2007

Accessでデータベースをパスワードで保護する

Access2007

MicrosoftのOfficeシリーズのデータベースソフト、Access(アクセス)の使い方です。

セキュリティにはいくら気をつけてもつけすぎということはない時代です。
大切なデータベースにはパスワードをつけましょう。

パスワードのかけ方です。

  1. 上部メニューの「データベースツール」をクリックし、「パスワードを使用して暗号化」というところをクリックします。
  2. すると、パスワード入力欄が出ますので、パスワードを入力します。
  3. データベースによっては、「パスワードをかけるためには排他モードでファイルを開きなおしてください」というメッセージが出たりします。この、「排他モードで開く」方法が実にわかりにくいので紹介しておきます。
  4. 左上の丸っこいOfficeボタンをクリックし、いったんデータベースを閉じます。
  5. 同じくOfficeボタンをクリックし、「開く」をクリックします。このとき、右にある「最近使用したドキュメント」から開かないでください。
  6. 通常ファイルを開くようにファイルを選択すると、下のファイルを「開く」の右横の下三角がクリックできます。そこをクリックすると、「排他モードで開く」が出てきますので、これをクリックします。

access1.png