我是Android的新手,我的抽屉有问题。 我的导航抽屉里有几个选项。在我的主页中,抽屉内有一个默认的项目列表。当用户登录时,更改取决于用户的状态。
所以我的问题出在我抽屉里的默认项目列表中: 新闻 登录 约
当我登录例如普通员工时 它必须改为不同的列表 新闻 轮廓 应用 付款 关于 退出
依旧......
但是首先显示那些项目 新闻 登录 关于 付款 关于 退出
从以前的项目显示的登录和关于仍然显示即使i。删除它()我甚至使用.clear()当我调试它时,它删除并清除它但仍然输出显示以前的项目,但当我向下滚动它更改为我想要显示的内容时,也会在我点击其中一个项目时发生。
有人可以帮我解决吗?非常感谢你。
这是我的代码。
public class MainActivity extends ActionBarActivity implements LoginFragment.StatusListener, View.OnClickListener,
HomeEmployeeFragment.HomeStatusListener, HomeEmployerFragment.HomeStatusEmprListener {
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;
// nav drawer title
private CharSequence mDrawerTitle;
// used to store app title
private CharSequence mTitle;
// slide menu items
private String[] navMenuTitles;
private ArrayList<NavDrawerItem> navDrawerItems;
private NavDrawerListAdapter drawer_adapter;
String status;
SharedPreferences shared;
SharedPreferences.Editor edit;
final String TAG = "MainActivity";
public void onLogin(String stat){
Log.d(TAG, "Status login: " + stat);
edit.putString("Status", stat);
edit.commit();
}
public void onHomeEmployee(String stat){
Log.d(TAG, "Status HomEmp: " + stat);
navDrawerItems.clear();
updateDrawer();
edit.putString("Status", stat);
edit.commit();
}
public void onHomeEmployer(String stat){
Log.d(TAG, "Status: " + stat);
navDrawerItems.clear();
updateDrawer();
edit.putString("Status", stat);
edit.commit();
}
@Override
protected void onResume() {
super.onResume();
}
protected void onPause(){
super.onPause();
}
@Override
protected void onStart() {
super.onStart();
}
private void displayDrawer() {
//start for drawer
mTitle = mDrawerTitle = getTitle();
// load slide menu items
navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.list_slidermenu);
navDrawerItems = new ArrayList<NavDrawerItem>();
navDrawerItems.clear();
updateDrawer();
// setting the nav drawer list adapter
drawer_adapter = new NavDrawerListAdapter(getApplicationContext(), navDrawerItems);
mDrawerList.setAdapter(drawer_adapter);
drawer_adapter.notifyDataSetChanged();
//replace getActionBar with getSupportActionBar
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.string.app_name, // nav drawer open - description for accessibility
R.string.app_name // nav drawer close - description for accessibility
){
public void onDrawerClosed(View view) {
getSupportActionBar().setTitle(mTitle);
invalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
getSupportActionBar().setTitle(mDrawerTitle);
invalidateOptionsMenu();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
mDrawerList.setOnItemClickListener(new SlideMenuClickListener());
}
private void updateDrawer(){
navDrawerItems.clear();
status = shared.getString("Status", "");
if(status != null) {
if(status.equals("employee")) {
Log.d(TAG, "employee drawer");
navDrawerItems.clear();
navDrawerItems.remove(new NavDrawerItem(navMenuTitles[1])); // login
navDrawerItems.remove(new NavDrawerItem(navMenuTitles[2])); // about
//News
navDrawerItems.add(new NavDrawerItem(navMenuTitles[0]));
//Profile
navDrawerItems.add(new NavDrawerItem(navMenuTitles[4]));
//Application
navDrawerItems.add(new NavDrawerItem(navMenuTitles[6]));
//Payments
navDrawerItems.add(new NavDrawerItem(navMenuTitles[8]));
//Notification
navDrawerItems.add(new NavDrawerItem(navMenuTitles[10]));
//Message
navDrawerItems.add(new NavDrawerItem(navMenuTitles[12]));
// About
navDrawerItems.add(new NavDrawerItem(navMenuTitles[2]));
//Log out
navDrawerItems.add(new NavDrawerItem(navMenuTitles[13]));
} else if (status.equals("employer")) {
Log.d(TAG, "employer drawer");
navDrawerItems.clear();
navDrawerItems.remove(new NavDrawerItem(navMenuTitles[1])); // login
navDrawerItems.remove(new NavDrawerItem(navMenuTitles[2])); // about
//News
navDrawerItems.add(new NavDrawerItem(navMenuTitles[0]));
//Employer Profile
navDrawerItems.add(new NavDrawerItem(navMenuTitles[14]));
//Message
navDrawerItems.add(new NavDrawerItem(navMenuTitles[12]));
// About
navDrawerItems.add(new NavDrawerItem(navMenuTitles[2]));
//Log out
navDrawerItems.add(new NavDrawerItem(navMenuTitles[13]));
} else {
Log.d(TAG, "default drawer 1");
navDrawerItems.clear();
//News
navDrawerItems.add(new NavDrawerItem(navMenuTitles[0]));
// Login
navDrawerItems.add(new NavDrawerItem(navMenuTitles[1]));
// About
navDrawerItems.add(new NavDrawerItem(navMenuTitles[2]));
}
} else {
Log.d(TAG, "default drawer 2");
//Members News
navDrawerItems.add(new NavDrawerItem(navMenuTitles[0]));
// Login
navDrawerItems.add(new NavDrawerItem(navMenuTitles[1]));
// About
navDrawerItems.add(new NavDrawerItem(navMenuTitles[2]));
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
shared = getSharedPreferences("SSSPref", Context.MODE_PRIVATE);
edit = shared.edit();
// status = shared.getString("Status", "");
getSupportActionBar().setLogo(R.drawable.toolbarimage);
getSupportActionBar().setDisplayUseLogoEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
displayDrawer();
if (savedInstanceState == null) {
// on first time display view for first nav item
displayView(0);
}
initControls();
}
private class SlideMenuClickListener implements
ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// display view for selected nav drawer item
displayView(position);
}
}
private void displayView(int position) {
// update the main content by replacing fragments
Context context = getApplicationContext();
CharSequence text = "This is not yet available";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
Fragment fragment = null;
Intent i;
switch (position) {
case 0:
if(status.equals("employee")){
fragment = new HomeEmployeeFragment();
}else if(status.equals("employer")){
fragment = new HomeEmployerFragment();
}else{
fragment = new HomeFragment();
}
break;
case 1:
if(status.equals("employee")){
fragment = new EmpProfileFragment();
btn_login_reg.setEnabled(false);
}else if(status.equals("employer")){
fragment = new EmprProfileFragment();
}else{
fragment = new LoginFragment();
}
break;
case 2:
if(status.equals("employee")){
toast.show();
}else if(status.equals("employer")){
toast.show();
}else {
fragment = new AboutFragment();
}
break;
case 3:
if(status.equals("employee")){
fragment = new LoanApplicationFragment();
}else if(status.equals("employer")){
toast.show();
}else {
toast.show();
}
break;
case 4:
if(status.equals("employee")){
fragment = new DetailFragment();
}else if(status.equals("employer")){
toast.show();
}else {
toast.show();
}
break;
case 5:
if(status.equals("employee")){
toast.show();
}else if(status.equals("employer")){
toast.show();
}else{
}
break;
case 6:
if(status.equals("employee")){
fragment = new LoanEligibilityFragment();
}else if(status.equals("employer")){
fragment = new AboutFragment();
}else {
toast.show();
}
break;
case 7:
if(status.equals("employee")){
toast.show();
}else if(status.equals("employer")){
i = new Intent(this, MainActivity.class);
startActivity(i);
finish();
edit.remove("Status");
edit.commit();
}else{
}
break;
case 8:
if(status.equals("employee")){
toast.show();
}else if(status.equals("employer")){
toast.show();
}else{
toast.show();
}
break;
case 9:
if(status.equals("employee")){
toast.show();
}else if(status.equals("employer")){
fragment = new AboutFragment();
}else{
}
break;
case 10:
if(status.equals("employee")){
fragment = new AboutFragment();
}else if(status.equals("employer")){
toast.show();
}else{
toast.show();
}
break;
case 11:
i = new Intent(this, MainActivity.class);
startActivity(i);
finish();
edit.remove("Status");
edit.commit();
break;
default:
fragment = new HomeFragment();
break;
}
if (fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, fragment).commit();
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(navMenuTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
} else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
}