samedi 18 avril 2015

How to prevent popup menu from closing on checkbox click

I search a lot on net but there is nothing about preventing popup menu from closing.


Whenever i click on checkbox item or any other popup menu item, popup menu dismiss itself. How can i prevent it from dismissing when user check/uncheck checkbox in popup menu.


I'm showing popup menu on actionbar-menu item's click event.



//main_menu.xml
<menu xmlns:android="http://ift.tt/nIICcg"
xmlns:app="http://ift.tt/GEGVYd"
xmlns:tools="http://ift.tt/LrGmb4"
tools:context="com.worldofjobs.woj.MainActivity" >

<item
android:id="@+id/action_popUpMenu"
android:icon="@drawable/ic_action_overflow"
android:title="@string/main_action_popUpMenu"
app:showAsAction="always"/>

</menu>

//popup_items.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://ift.tt/nIICcg" >

<item
android:id="@+id/refresh_item"
android:title="@string/main_refresh"/>
<item
android:id="@+id/notification_item"
android:checkable="true"
android:title="Start notification"/>
<item
android:id="@+id/changePasswrod_item"
android:title="@string/main_changePassword"/>
<item
android:id="@+id/deleteAccount_item"
android:title="@string/main_deleteAccount"/>
<item
android:id="@+id/logout_item"
android:title="@string/main_logout"/>

</menu>

/**
* Shows popup menu on click of action bar-menu inflates from
* menu.pop_items-xml
*/
private void showPopup() {

try {

View v = findViewById(R.id.action_popUpMenu);

PopupMenu popup = new PopupMenu(this, v);
popup.setOnMenuItemClickListener(MainActivity.this);

MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.pop_items, popup.getMenu());
popup.show();

} catch (Exception e) {

Log.e("MainActivity-showPopup:", e.toString());
}
}

/**
* Handles click events of popup menu items
*/
@Override
public boolean onMenuItemClick(MenuItem item) {

super.onMenuItemSelected(1, item);
switch (item.getItemId()) {

case R.id.refresh_item:
refresh();
return true;

case R.id.notification_item:
return true;

case R.id.changePasswrod_item:
changePasswordPopup();
return true;

case R.id.deleteAccount_item:
deleteAccount();
return true;

case R.id.logout_item:
session.logout();
finish();
return true;
}
return true;
}




Aucun commentaire:

Enregistrer un commentaire