ポップアップ画面を作成したアンドロイドアプリケーションを作成しました。しかし、私が戻るボタンを押しているとき、ポップアップは閉じていません。バックプレスでAndroidポップアップウィンドウを閉じる
私はonBackPressed()で試しました。それは動作していません。
誰かに何をすべきか教えてもらえますか?あなたがする必要がどのような
よろしく、
シャンカール
ポップアップ画面を作成したアンドロイドアプリケーションを作成しました。しかし、私が戻るボタンを押しているとき、ポップアップは閉じていません。バックプレスでAndroidポップアップウィンドウを閉じる
私はonBackPressed()で試しました。それは動作していません。
誰かに何をすべきか教えてもらえますか?あなたがする必要がどのような
よろしく、
シャンカール
あなたはそれを初期化した後、あなたのPopupWindowにコールsetBackgroundDrawableです。ような何か:
myPopup.setBackgroundDrawable(new BitmapDrawable());
これは動作することが確認されています。 – maebe
1.ポップアップを表示する前に*を必ず呼び出してください。 2.パラメータを持たないコンストラクタは明らかに廃止されているので、そのコンストラクタにResourcesオブジェクトを渡したいことがあります。 3.詳細:http://stackoverflow.com/questions/3121232/android-popup-window-dismissal – SilithCrowe
これは素晴らしい動作します。しかし、あなたが真になるように焦点を合わせるようにしてください。それが間違っているならば、戻るボタンはautomaticalltを働かないでしょう、あなたは呼び出し活動でhotveryspicyの解決策を実装する必要があります。 – conor
//here "popUp" is ref of PopupWindow
popUp.setBackgroundDrawable(new BitmapDrawable());// it is most important peace of code
// For Key Listeners
View v = popUp.getContentView();
//Here assigning the key Listners
v.setOnKeyListener(this);
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK) popUp.dismiss();
return false;
}//Implements the KeyListener
//and be careful we should implement "OnKeyListener"`
私は最近、私はListPopupWindow(android.support.v7.internal.widget.ListPopupWindow
)と協力し、私が呼ばれたときに戻るボタンが動作し始め
LayoutInflater layoutInflater = (LayoutInflater)MainActivity.this.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
View popupView = layoutInflater.inflate(R.layout.popup_window_country_list, null);
countryPopup = new PopupWindow(popupView, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
countryPopup.setBackgroundDrawable (new BitmapDrawable());
countryPopup.setFocusable(true); //Make Here True For back press dismiss
countryPopup.setOutsideTouchable(true);
countryPopup.setTouchInterceptor(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
countryPopup.dismiss();
return true;
}
return false;
}
});
(私は新しいユーザーだ)、それが有用であると思います
popupWindow.setModal(true);
setBackgroundDrawable
の方法で設定した内容に関係なく、ここでは他の解決方法を想定しています。
次のコードは完全に動作しています。 だから、
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
//Changes 'back' button action
if(keyCode==KeyEvent.KEYCODE_BACK)
{
if(!popUpHelper.isPopupShowing()){
onBackPressed();
}else{
popUpHelper.dismiss();
}
}
return super.onKeyDown(keyCode, event);
}
class PopupHelper {
PopupWindow popupWindowAttachment;
public void initAndShow(Activity context,int mToolbarHeight){
View layout = activity.getLayoutInflater().inflate(
R.layout.activity_chat_attachment_popup, null);
//create and show and Make sure popup window focusable should be false
popupWindowAttachment = new PopupWindow(layout,
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindowAttachment.showAsDropDown(layout, 0, mToolbarHeight
+ (mToolbarHeight/2) - 5);
}
public void dismiss() {
if (isPopupShowing())
popupWindowAttachment.dismiss();
}
public boolean isPopupShowing() {
return popupWindowAttachment==null?false:popupWindowAttachment
.isShowing();
}
}
popup.setBackgroundDrawable(new BitmapDrawable());
popup.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
//do your code here
}
});
100%のポップアップが背中を押しに却下されます、あなたの活動に次の関数をオーバーライドします。あなたのポップアップ・コードは、あなたが書いたコードスニペットを提供する場合、それが役立つだろう。このコードは以下の
public void popup() {
View popUpView_pur = getActivity().getLayoutInflater().inflate(R.layout.popup, null);
PopupWindow popuplayout_pur = new PopupWindow(popUpView_pur, -1, -1, true);
popuplayout_pur.setBackgroundDrawable(new BitmapDrawable());
popuplayout_pur.setOutsideTouchable(true);
popuplayout_pur.showAtLocation(popUpView_pur, 17, 0, 0);
}
(または)
public void popup() {
// TODO Auto-generated method stub
LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View popupView = inflater.inflate(R.layout.popuplayout, null, false);
PopupWindow pw = new PopupWindow(getActivity());
pw.setWidth(WindowManager.LayoutParams.MATCH_PARENT);
pw.setHeight(WindowManager.LayoutParams.MATCH_PARENT);
pw.setTouchable(true);
pw.setFocusable(true);
pw.setOutsideTouchable(true);
pw.setContentView(popupView);
pw.showAtLocation(popupView, Gravity.CENTER, 0, 0);
}
と交換してください。 DialogまたはPopupWindowのインスタンスを参照しているかどうかはわかりません。 –