Pending runnable that will be executed after the drawer has been closed.

This commit is contained in:
wfiete 2016-12-08 12:20:39 +01:00
parent 3d25bd7d7d
commit 4488bfb84c

View file

@ -30,6 +30,7 @@ import android.content.res.Configuration;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
@ -141,6 +142,11 @@ public abstract class DrawerActivity extends ToolbarActivity implements DisplayU
*/
private TextView mQuotaTextView;
/**
* runnable that will be executed after the drawer has been closed.
*/
private Runnable pendingRunnable;
/**
* Initializes the drawer, its content and highlights the menu item with the given id.
* This method needs to be called after the content view has been set.
@ -192,6 +198,11 @@ public abstract class DrawerActivity extends ToolbarActivity implements DisplayU
toggleAccountList();
}
invalidateOptionsMenu();
if (pendingRunnable != null) {
new Handler().post(pendingRunnable);
pendingRunnable = null;
}
}
/** Called when a drawer has settled in a completely open state. */
@ -252,53 +263,58 @@ public abstract class DrawerActivity extends ToolbarActivity implements DisplayU
navigationView.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
public boolean onNavigationItemSelected(final MenuItem menuItem) {
mDrawerLayout.closeDrawers();
switch (menuItem.getItemId()) {
case R.id.nav_all_files:
menuItem.setChecked(true);
mCheckedMenuItem = menuItem.getItemId();
showFiles(false);
break;
case R.id.nav_on_device:
menuItem.setChecked(true);
mCheckedMenuItem = menuItem.getItemId();
showFiles(true);
break;
case R.id.nav_uploads:
Intent uploadListIntent = new Intent(getApplicationContext(),
UploadListActivity.class);
uploadListIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(uploadListIntent);
break;
case R.id.nav_folder_sync:
Intent folderSyncIntent = new Intent(getApplicationContext(),FolderSyncActivity.class);
startActivity(folderSyncIntent);
break;
case R.id.nav_settings:
Intent settingsIntent = new Intent(getApplicationContext(), Preferences.class);
startActivity(settingsIntent);
break;
case R.id.nav_participate:
Intent participateIntent = new Intent(getApplicationContext(),
ParticipateActivity.class);
startActivity(participateIntent);
break;
case R.id.drawer_menu_account_add:
createAccount(false);
break;
case R.id.drawer_menu_account_manage:
Intent manageAccountsIntent = new Intent(getApplicationContext(),
ManageAccountsActivity.class);
startActivityForResult(manageAccountsIntent, ACTION_MANAGE_ACCOUNTS);
break;
case Menu.NONE:
// account clicked
accountClicked(menuItem.getTitle().toString());
default:
Log_OC.i(TAG, "Unknown drawer menu item clicked: " + menuItem.getTitle());
}
pendingRunnable = new Runnable() {
@Override
public void run() {
switch (menuItem.getItemId()) {
case R.id.nav_all_files:
menuItem.setChecked(true);
mCheckedMenuItem = menuItem.getItemId();
showFiles(false);
break;
case R.id.nav_on_device:
menuItem.setChecked(true);
mCheckedMenuItem = menuItem.getItemId();
showFiles(true);
break;
case R.id.nav_uploads:
Intent uploadListIntent = new Intent(getApplicationContext(),
UploadListActivity.class);
uploadListIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(uploadListIntent);
break;
case R.id.nav_folder_sync:
Intent folderSyncIntent = new Intent(getApplicationContext(),FolderSyncActivity.class);
startActivity(folderSyncIntent);
break;
case R.id.nav_settings:
Intent settingsIntent = new Intent(getApplicationContext(), Preferences.class);
startActivity(settingsIntent);
break;
case R.id.nav_participate:
Intent participateIntent = new Intent(getApplicationContext(),
ParticipateActivity.class);
startActivity(participateIntent);
break;
case R.id.drawer_menu_account_add:
createAccount(false);
break;
case R.id.drawer_menu_account_manage:
Intent manageAccountsIntent = new Intent(getApplicationContext(),
ManageAccountsActivity.class);
startActivityForResult(manageAccountsIntent, ACTION_MANAGE_ACCOUNTS);
break;
case Menu.NONE:
// account clicked
accountClicked(menuItem.getTitle().toString());
default:
Log_OC.i(TAG, "Unknown drawer menu item clicked: " + menuItem.getTitle());
}
}
};
return true;
}