Command disabled: backlink

Tips

とりあえずメモ書きとして残しておくこと

Ti.UI.currentWindowはurlで呼び出された中でのみ使える

Tab.closeのパラメータ

  • iOSはパラメータに閉じるウィンドウを渡すべきだとなっているが、Androidはパラメータを受け取らない。
  • Androidでcloseをパラメータの有無に関わらず使うとエラーで落ちる
    • 回避:window.closeで閉じて、tab.windowを手動で更新

Ti.Module(のサブクラス)を継承できない?

カスタムプロトタイプクラスにaddEventListenerやfireEventを行わせたいのでTi.Moduleのサブクラスを継承元としたが、 “has no method addEventListener”となり実行できない。何か自分が勘違いしているかな。

さんぷるのようにTitanium.Appにリスナーを設定したくはないんですが。適当なサブクラスをプロパティとしてイベント登録することもできますが。

HTTPClient.onLoadのthisキーワードはhttpClient

たとえprotorypeメソッドだとしてもonLoadの中ではthisはhttpCientとなる(=プロパティが使えない)。

ここがJavascript OOPのきついところ。

回避策は別に記載。

Android BackボタンをHomeボタンの挙動にする

TabGroupではTabに関連づけたWindowにexitOnClose=falseとしても、バックボタンを押すとアプリが落ちてしまいます。 TabGroupのプロパティexitOnCloseをfalseとすると一度タブがない画面が出て同じく落ちてしまうので、 以下のコードでバックボタンの挙動をホームボタンに変更できます。

参考:Simulate android home button action.

    //バックボタンをホームボタンの動作に変更する
     window.addEventListener("android:back",function(e){
     	var intent = Ti.Android.createIntent({
     		action: Ti.Android.ACTION_MAIN
     	});
     	intent.addCategory(Ti.Android.CATEGORY_HOME);
     	Ti.Android.currentActivity.startActivity(intent);
     });

fireEventが時々送られない(IOS)

ver 2.1.0

コードの場所によってfireEventでイベントが発生しないことがある。 iOS限定の動きのようだが同じfuncion内でもコードの場所によっては送られる。

同じようにイベントの挙動で悩んでいる人はたくさんいるようですが、 みんな試行錯誤でその場を乗り切っている状態で原因の特定までは誰も至ってはいないようです。

TitaniumにはhasEventHandlerのような、登録されているイベントを調べるメソッドはないので、 removeEventListnerを慎重に行うしかなさそうです。 登録されていないイベントをremoveEventListenerすることはできますが、その後addEventLisnerした あらゆるイベントをキャンセルするという挙動が報告されているます。

Propertiesのデータが消えない

Ver 2.1.0

Titaniumには関係なさそうですが、データ削除、アンインストールを行ってもPropetiesのデータがGalaxy Sからなぜか消えませんでした。 他のAndroid端末からは当然消えるので、Galaxy S固有のバックアップ機能か何かかもしれませんが、 Air for AndroidではGalaxy Sでもデータを全て消すことができていたので何か理由がありそうですが。

とりあえずはPropetiesには個人情報などを直接書かないようにして対処しておいた方がいいかもしれません。

TextFiledが入ったTableViewRowにclassNameを使うと壊れる

Ver 2.1.0

TextFiledにフォーカスをあてるとレイアウトが壊れて入力ができなくなります。 TableViewRowのclassNameで参照先のjssクラスの値をそのまま設定するとなぜか動きます。 classNameで設定したことがどうやらお気に召さないようです。

端末ブラウザでWebページを開く

WebViewで開くわけではありません。

Ti.Platform.openURL({URL});

エラー

[ERROR][TiApplication(  648)] (main) [1491,16782] Sending event: exception on thread: main msg:java.lang.OutOfMemoryError: bitmap size exceeds VM budget;
[ERROR][TiApplication(  648)] java.lang.OutOfMemoryError: bitmap size exceeds VM budget

原因はよくわかりませんが少なくともメモリ割当を増やした程度では直りませんでした。エミュレータのみの現象ですが、この問題関係のフォーラムでは Androidエミュレータが叩かれて終わる場合が多かったです。Terrible!

titanium/tips.txt · 最終更新: 2012/07/20 07:22 (外部編集)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0