0
我需要修復多選項目物品。當我選擇其中一個項目時,它會改變它的顏色。但是當我再次打開左側抽屜時,它仍然處於選中狀態。我需要在2種情況下丟棄任何選定的項目:1)當我按另一個項目時,必須取消選擇的項目。 2)當左抽屜關閉時,選擇必須丟棄。 左抽屜固定物品多選
[Activity(Theme = "@style/GsiTheme", MainLauncher = true, ScreenOrientation = ScreenOrientation.Portrait)]
public class MainPageActivity : AppCompatActivity, IActivityWithToolbar
{
#region Views
[InjectView(Resource.Id.mainpageToolbar)]
SupportToolbar _toolbar;
[InjectView(Resource.Id.navigation_view)]
NavigationView _navigationView;
[InjectView(Resource.Id.drawer)]
DrawerLayout _drawer;
#endregion
ActionBarDrawerToggle _drawerToggle;
public SupportToolbar Toolbar
{
get
{
return _toolbar;
}
}
Dictionary<int, Type> _fragmentTypesById = new Dictionary<int, Type>() {
{Resource.Id.categoriesMenuItem,typeof(CategoriesListFragment)},
{Resource.Id.opportunitiesMenuItem,typeof(OpportunitiesListFragment)},
{Resource.Id.prospectsMenuItem,typeof(ProspectsListFragment)},
{Resource.Id.suppliersMenuItem,typeof(SuppliersListFragment)},
{Resource.Id.accountsMenuItem,typeof(AccountsListFragment)},
{Resource.Id.fabricantsMenuItem,typeof(ManufacturersListfragment)},
{Resource.Id.contactsMenuItem,typeof(ContactsListFragment)},
{Resource.Id.productsMenuItem,typeof(ProductsListFragment)},
{Resource.Id.warehouseMenuItem,typeof(WarehouseListFragment)},
{Resource.Id.stockMenuItem,typeof(StocksListFragment)}
};
int _selectedPageMenuId;
protected override void OnCreate(Bundle savedInstanceState)
{
try
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.mainPagelayout);
Cheeseknife.Inject(this);
initUi();
//var ft = this.SupportFragmentManager.BeginTransaction();
//ft.Add(Resource.Id.mainPageFragmentHolder, new CategoriesListFragment());
//ft.Commit();
}
catch (Exception ex)
{
Toast.MakeText(this, ex.Message, ToastLength.Long).Show();
}
}
private void initFragmentByMenuId(int menuId)
{
if (_selectedPageMenuId == menuId)
return;
if (!_fragmentTypesById.ContainsKey(menuId))
return;
var currFragment = Activator.CreateInstance(_fragmentTypesById[menuId]) as Android.Support.V4.App.Fragment;
Android.Support.V4.App.FragmentTransaction ft = SupportFragmentManager.BeginTransaction();
ft.Replace(Resource.Id.mainPageFragmentHolder, currFragment, currFragment.GetType().Name);
ft.Commit();
_selectedPageMenuId = menuId;
}
void navigationItem_selected(object sender, NavigationView.NavigationItemSelectedEventArgs e)
{
_navigationView.Menu.FindItem(e.MenuItem.ItemId).SetChecked(true);
initFragmentByMenuId(e.MenuItem.ItemId);
_drawer.CloseDrawers();
}
void subscribeEvents()
{
_navigationView.NavigationItemSelected += navigationItem_selected;
}
void unSubscribeEvents()
{
_navigationView.NavigationItemSelected -= navigationItem_selected;
}
void initUi()
{
SetSupportActionBar(_toolbar);
SupportActionBar.Title = "Dashboard";
_drawerToggle = new CustActionBarDrawToggle(this, _drawer, 0, 0);
_drawer.AddDrawerListener(_drawerToggle);
_drawerToggle.SyncState();
SupportActionBar.SetHomeButtonEnabled(true);
SupportActionBar.SetDisplayShowHomeEnabled(true);
SupportActionBar.SetDisplayHomeAsUpEnabled(true);
}
public override bool OnOptionsItemSelected(IMenuItem item)
{
_drawerToggle.OnOptionsItemSelected(item);
return base.OnOptionsItemSelected(item);
}
protected override void OnStart()
{
try
{
base.OnStart();
subscribeEvents();
}
catch (Exception ex)
{
Toast.MakeText(this, ex.Message, ToastLength.Long).Show();
}
}
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
try
{
base.OnActivityResult(requestCode, resultCode, data);
AuthenticationAgentContinuationHelper.SetAuthenticationAgentContinuationEventArgs(requestCode, resultCode, data);
}
catch (Exception ex)
{
Toast.MakeText(this, ex.Message, ToastLength.Long).Show();
}
}
protected override void OnStop()
{
try
{
base.OnStop();
unSubscribeEvents();
}
catch (Exception ex)
{
Toast.MakeText(this, ex.Message, ToastLength.Long).Show();
}
}
}
}
但我怎麼能在另一個Toggle-class中管理lastSelected?我有一個類'CustActionBarDrawToggle:ActionBarDrawerToggle'和一個方法:'公共覆蓋無效OnDrawerClosed(查看抽屜視圖) \t { base.OnDrawerClosed(drawerView); }' –