読者です 読者をやめる 読者になる 読者になる

kitak.blog

Kみたいなエンジニアになりたいブログ

Titanium MobileでAndroidアプリを作るときはexitOnCloseがとても大事

JavaScript Titanium

こんにちは!

Titanium Mobileで複数のウィンドウを遷移するAndroidアプリを作るときはexitOnCloseプロパティが重要になります.
どういうことかというと, 以下のようなプログラムを書いたときに

var win = Titanium.UI.createWindow({  
    title:'最初のウィンドウ',
    backgroundColor:'#000'
});

win.addEventListener('click', function (e) {
	var win = Ti.UI.createWindow({
		title:'次のウィンドウ',
		backgroundColor:'#000' 
	});
	win.open();	
})

win.open();

最初のウィンドウをタップ,次のウィンドウに遷移して, Android端末の「戻る」ボタンを押すとアプリが終了してしまうのです. ここは「次のウィンドウ」だけを閉じたいところです.

そのような挙動にするには,Window作成時の引数オブジェクトでexitOnCloseプロパティを指定します. プロパティの真偽によって,ウィンドウを閉じるときに同時にアプリも終了するか指定できます.
プログラムを以下のように修正します.

var win = Titanium.UI.createWindow({  
    title:'最初のウィンドウ',
    backgroundColor:'#000',
    exitOnClose:true,
    fullscreen:false
});

win.addEventListener('click', function (e) {
	var win = Ti.UI.createWindow({
		title:'次のウィンドウ',
		backgroundColor:'#000',
                exitOnClose:false,
                fullscreen:false
	});
	win.open();	
})

win.open();

これでうまく動くようになりました.

追記: fullscreenプロパティをfalseにしないとうまく動きませんでした. どうやら,Titanium MobileのWindowオブジェクトには2種類があって, Heavyweight Weightの方じゃないとexitOnCloseを指定しても意味がないようです. ココを参照しました.