• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Android Titaniumで予期せず停止)

Android Titaniumで予期せず停止

このQ&Aのポイント
  • iPhone/iPad と Android のネイティブアプリを両方とも少し開発したことがあるくらいの経験ですが、Titanium によって両方に対応するアプリを作れるということを知り、さっそくインストールして簡単なアプリを作ってみました。
  • iOS のアプリは問題なく動作したのですが、Android アプリを実行しているときにリスト表示の上で左右フリックを繰り返すと「予期せず停止しました。やり直してください」というエラーメッセージが表示されてアプリが落ちてしまいます。
  • この辺りをたよりにググってみたところ、同じエラーメッセージ「pointerIndex out of range」に関する記事がありました。

質問者が選んだベストアンサー

  • ベストアンサー
noname#177743
noname#177743
回答No.1

そこからのリンクでたどり着いたところにありましたが、以下は試されましたか。 タッチされたポイント情報を調べるのに、getPointerCountだのメソッドを使わずに、event.getActionから直接タップしたポイントの位置情報などを取り出すようにすればいいみたいです。 int action = event.getAction(); int actionCode = action & MotionEvent.ACTION_MASK; if(actionCode == MotionEvent.ACTION_POINTER_UP || action == MotionEvent.ACTION_UP) { int which = action >> MotionEvent.ACTION_POINTER_ID_SHIFT; int id = event.getPointerId(which); float x = event.getX(id); float y = event.getY(id); 確認していないのでこれで動くのかわかりませんが……。

haru44
質問者

お礼

さっそくの回答ありがとうございます! おっしゃることは分かりますし、そのような修正を行えれば良いのですが、なにぶんにも Titanium というフレームワークを使っている関係で、Java で書くことができないのです。 このフレームワークでは JavaScript を基本に画面を組み立ててアプリを作るということになっており、おおよそ下記のような感じになります。(ソースからのコピペではないので実際に動くものではありません) //ウインドウを作る var win = Ti.UI.createWindow({ backgroundColor : 'white', }); //リストを作る var resultlist = Ti.UI.createTableView(); //行を作成して、登録 for (var i = 0; i < json.result.length; i++) { var row = Ti.UI.createTableViewRow({ title:'', height: '60', }); var rowname = Titanium.UI.createLabel({ text : json.result[i].name, color : '#000', top : 5, left : '1%', width : '49%', height : 'auto' }); row.add(rowname); tabledata.push(row); } //テーブルにデータをセット resultlist.data = tabledata; resultlist.addEventListener('click', function(e) { Titanium.UI.createAlertDialog({ title: 'メッセージ', message: '選択されました', buttonNames: ['OK'] }).show(); }); ・・・という感じですので、ご指摘のような修正を入れることはできないのではないかと思います。そこで Titanimum および JavaScript の範囲で回避できる方法はないものだろうかと探しております。せっかく回答をいただいたのに申し訳ありません。

関連するQ&A