一、在res的menu下创建菜单的布局文件 menu_main.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/self"
android:icon="@drawable/ic_menu_self"
android:title="@string/MENU_SELF">
</item>
</menu>
二、ActivityMain.java
// 创建菜单
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
return super.onCreateOptionsMenu(menu);
}
三、写一个User类 User.java
public class User {
/**
* 是否登录
*/
public boolean isLogin;
}
public User getUser() {
SharedPreferences settings = mContext.getSharedPreferences(NAME,
Context.MODE_PRIVATE);
User user = new User();
user.isLogin = settings.getBoolean("isLogin", false);
return user;
}
// Menu状态动态设置方法onPrepareOptionsMenu
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem item = menu.findItem(R.id.self);
user = config.getUser();
if (!user.isLogin) { // 如果不是登录状态
item.setIcon(R.drawable.ic_menu_login);
item.setTitle("登录");
} else { // 如果是登录状态
item.setIcon(R.drawable.ic_menu_logout);
item.setTitle("注销");
}
return super.onPrepareOptionsMenu(menu);
}
// 菜单项的点击事件
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
Intent intent;
switch (item.getItemId()) {
case R.id.self:
if (!user.isLogin) { // 登录
intent = new Intent(ActivityMain.this, ActivityLogin.class);
startActivity(intent);
} else { // 注销
logout();
}
break;
default:
break;
}
return true;
}