0
私はタッチアンドタイプの携帯電話用のアプリを1つ開発しています。アプリケーションの1つの画面には、3つのボタンがあります。タッチイベントが機能していません
ここで私が3つのボタンをタッチすると、動作しています。しかし、私がボタンの外側をタッチすると、トップバーまたはボトムバーにあることを意味し、タッチイベントも機能しています。以下では、Add Moreボタンがフォーカスされているとします。だから、私は下のバーに触れている場合は、ボタンのタッチも機能しています。この問題を解決するために、私は以下のコードを書いた:
protected boolean touchEvent(TouchEvent event) {
try {
int touchXPos = event.getX(1);
int touchYPos = event.getY(1);
int addBtnXPos = btnAddMore.getLeft();
int saveBtnXPos = btnSave.getLeft();
int helpBtnXpos = btnHelp.getLeft();
int vfmTitleTouch = m_vfmTitle.getHeight();
if(event.getEvent() == TouchEvent.CLICK)
{
if ((touchXPos >= addBtnXPos + 40) && (touchXPos <= (addBtnXPos + btnAddMore.getWidth() + 40)) && (touchYPos <= screenHeight -10) && (touchYPos >= (screenHeight -10 - btnAddMore.getHeight())) /*&& (touchYPos < (screenHeight-gmYPos)) */) {
Logger.out("touchEvent", "------------------------------1");
showPopUp();
} else if ((touchXPos >= saveBtnXPos + 40) && (touchXPos <= (saveBtnXPos + 40 + btnSave.getWidth())) && (touchYPos <= screenHeight -10) && (touchYPos >= (screenHeight -10 - btnSave.getHeight())) /* && (touchYPos < (screenHeight-gmYPos))*/) {
Logger.out("touchEvent", "------------------------------2");
saveToDb();
} else if ((touchXPos >= helpBtnXpos) && (touchXPos <= (helpBtnXpos + btnHelp.getWidth())) && (touchYPos <= (btnHelp.getTop() + btnHelp.getHeight())) && (touchYPos >= btnHelp.getTop()) /* && (touchYPos < (screenHeight-gmYPos))*/) {
Logger.out("touchEvent", "------------------------------3");
UiApplication.getUiApplication().pushScreen(new HelpScreen());
} else if ((touchYPos <= screenHeight - hfmBtn.getHeight()) && (touchYPos >= (vfmTitleTouch))) {
Logger.out("touchEvent", "------------------------------4");
//Logger.out("touchEvent", "touchY::::" +touchYPos + "Vfm Title::::" +vfmTitleTouch + " "+"GM Y Pos"+ gmYPos);
}
return true;
}
} catch (Exception e) {
}
return super.touchEvent(event);
}
しかし、それは働いていません。 とタッチイベントが
ありがとうございます。私もコードにいくつか変更を加えました。しかしそれは何とか働いています。今、私はボタンの外側をクリックしているとき、それはボタンに関連するコードを実行していませんが、フォーカスはボタンに来ているだけです。これは、保存ボタンの外側に触れると、フォーカスが保存ボタンに表示されることを意味します。 –
私は簡単な質問をしています。それらの 'ButtonField'のために' FieldChangeListener'を設定しましたか?もしそうなら、不要なイベントを殺すことを除いて、 'touchEvent(..)'で何もする必要はありません。そして、焦点の問題を引き起こす可能性があることについて私は確信していません。上記の回答リンクに記載されている戦略に従うことができます。 – Rupak
はい。ボタンのfieldChange Listenerを使用しています。 –