2014-02-17 2 views
0

Я хочу закрыть всплывающее окно той же кнопкой, с которой он открывается. Когда я снова нажимаю эту кнопку, всплывающее окно должно быть закрыто. и также хочу очистить это окно, когда я нажимаю кнопку «Назад». может ли кто-нибудь помочь мне в этом вопросе? Спасибо.закрыть всплывающее окно с той же кнопкой

вот мой код,

ivmainmenu.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      LayoutInflater layoutInflater 
      = (LayoutInflater)getBaseContext() 
       .getSystemService(LAYOUT_INFLATER_SERVICE); 
      View popupView = layoutInflater.inflate(R.layout.popupwindow, null); 
      final PopupWindow popupWindow = new PopupWindow(popupView,LayoutParams.FILL_PARENT, 
        LayoutParams.WRAP_CONTENT); 
       popupWindow.showAsDropDown(ivmainmenu, 150,14); 
       popupWindow.setOutsideTouchable(true); 

       TextView tvpopupwork = (TextView)popupView.findViewById(R.id.tvpopupwork); 
       TextView tvpopupabout = (TextView)popupView.findViewById(R.id.tvpopupabout); 
       TextView tvpopupservices = (TextView)popupView.findViewById(R.id.tvpopupservices); 
       TextView tvpopupcontact = (TextView)popupView.findViewById(R.id.tvpopupcontact); 

       tvpopupwork.setOnClickListener(new OnClickListener() { 

        @Override 
        public void onClick(View v) { 
         // TODO Auto-generated method stub 
         Intent intent = new Intent(Home.this,Ourwork.class); 
         intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
         startActivity(intent); 
        } 
       }); 

       tvpopupabout.setOnClickListener(new OnClickListener() { 

        @Override 
        public void onClick(View v) { 
         // TODO Auto-generated method stub 
         Intent intent = new Intent(Home.this,Aboutus.class); 
         intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
         startActivity(intent); 
        } 
       }); 

       tvpopupservices.setOnClickListener(new OnClickListener() { 

        @Override 
        public void onClick(View v) { 
         // TODO Auto-generated method stub 

         Intent intent = new Intent(Home.this,Services.class); 
         intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
         startActivity(intent); 
        } 
       }); 

       tvpopupcontact.setOnClickListener(new OnClickListener() { 

        @Override 
        public void onClick(View v) { 
         // TODO Auto-generated method stub 

         Intent intent = new Intent(Home.this,Contact.class); 
         intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
         startActivity(intent); 
        } 
       }); 
      } 
     }); 

ответ

0

Я хотел бы использовать логическую переменную, как;

boolean toggle = true; 

и onClickListener

PopupWindow popupWindow; 
if(toggle){ 
    // Show popup here 
    toggle = false; 
} 
else{ 
    if(popupWindow != null && popupWindow.isShowing()) 
     popupWindow.dismiss(); 
    toggle = true; 
} 
+0

it dont close .... – akky777

0

Используй булева флаг

if(flag) 
{ 
hideWindow(); 
flag=false; 
} 
else 
{ 
showWindow(); 
flag=true; 
} 

OverrideonBackPressed() скрыть, когда назад нажат

+0

где я должен писать это? – akky777

+0

Это не полный код для copy-paste.write Первый фрагмент на вашем клике по кнопке и Override onBackpressed() в любом месте вашей деятельности. –

1

Вы также можете создать 2 слушателей для прослушивания на разном Мероприятия. Слушатель 1 - это будет использоваться для выполнения задачи после открытия всплывающего окна Приёмника 2 - закрыть всплывающее окно

Вы можете установить слушатель от другого слушателя (переключить слушатель на кнопку мыши).

listener2 = new OnClickListener() { 

@Override 
public void onClick(View v) { 
    tv.setText("Listener2"); 
    //assign button to listener1 
    button.setOnClickListener(listener1); 
}}; 

listener1 = new OnClickListener() { 

@Override 
public void onClick(View v) { 
    tv.setText("Listener1"); 
    //assign button to listener2 
    button.setOnClickListener(listener2); 
}}; 

//set this listener as the default(initially) listener onCreate 
button.setOnClickListener(listener1); 
+0

Это решение работало очень хорошо для меня – audiophile121

Смежные вопросы