由于这个模块内容较多,篇幅较长,请耐心阅读。


“我”的模块分为四个部分

  • 我的界面
  • 设置界面
  • 修改密码界面
  • 设置密保和找回密码

一、“我”的界面

1、底部导航栏

(1)、导入界面图片

将底部导航栏所需图片main_course_icon.pngmain_course_icon_selected.pngmain_exercises_icon.pngmain_exercises_icon_selected.pngmain_my_icon.pngmain_my_icon_selected.png导入到drawable文件夹中。

(2)、底部导航栏界面代码——activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><LinearLayoutandroid:layout_width="fill_parent"  android:layout_height="fill_parent"android:background="@android:color/white"android:orientation="vertical"><!-- 导入标题栏——main_title_bar.xml文件 --><include layout="@layout/main_title_bar"/><!-- 主界面背景 --><FrameLayoutandroid:id="@+id/main_body"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@android:color/white"/></LinearLayout><!-- 底部导航栏界面设置 --><LinearLayoutandroid:id="@+id/main_bottom_bar"android:layout_width="match_parent"android:layout_height="55dp"android:layout_alignParentBottom="true"android:background="#F2F2F2"android:orientation="horizontal"><!-- 底部导航栏课程 --><RelativeLayoutandroid:id="@+id/bottom_bar_course_btn"android:layout_width="0dp"android:layout_height="fill_parent"android:layout_weight="1"><TextViewandroid:id="@+id/bottom_bar_text_course"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:layout_marginBottom="3dp"android:gravity="center"android:singleLine="true"android:text="课程"android:textColor="#666666"android:textSize="14sp"/><ImageViewandroid:id="@+id/bottom_bar_image_course"android:layout_width="27dp"android:layout_height="27dp"android:layout_above="@id/bottom_bar_text_course"android:layout_alignParentTop="true"android:layout_centerHorizontal="true"android:layout_marginTop="3dp"android:src="@drawable/main_course_icon"/></RelativeLayout><!-- 底部导航栏习题 --><RelativeLayoutandroid:id="@+id/bottom_bar_exercises_btn"android:layout_width="0dp"android:layout_height="fill_parent"android:layout_weight="1"><TextViewandroid:id="@+id/bottom_bar_text_exercises"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:layout_marginBottom="3dp"android:gravity="center"android:singleLine="true"android:text="习题"android:textColor="#666666"android:textSize="14sp"/><ImageViewandroid:id="@+id/bottom_bar_image_exercises"android:layout_width="27dp"android:layout_height="27dp"android:layout_above="@id/bottom_bar_text_exercises"android:layout_alignParentTop="true"android:layout_centerHorizontal="true"android:layout_marginTop="3dp"android:src="@drawable/main_exercises_icon"/></RelativeLayout><!-- 底部导航栏我 --><RelativeLayoutandroid:id="@+id/bottom_bar_myinfo_btn"android:layout_width="0dp"android:layout_height="fill_parent"android:layout_weight="1"><TextViewandroid:id="@+id/bottom_bar_text_myinfo"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:layout_marginBottom="3dp"android:gravity="center"android:singleLine="true"android:text="我"android:textColor="#666666"android:textSize="14sp"/><ImageViewandroid:id="@+id/bottom_bar_image_myinfo"android:layout_width="27dp"android:layout_height="27dp"android:layout_above="@id/bottom_bar_text_myinfo"android:layout_alignParentTop="true"android:layout_centerHorizontal="true"android:layout_marginTop="3dp"android:src="@drawable/main_my_icon"/></RelativeLayout></LinearLayout>
</RelativeLayout>

(3)、底部导航栏逻辑代码——MainActivity.java

package com.boxuegu.activity;import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.KeyEvent;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;import com. boxuegu. R;
import com.boxuegu.view.MyInfoView;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{//中间内容栏private FrameLayout mBodyLayout;//底部导航栏按钮private LinearLayout mBottomLayout;//底部按钮private View mCourseBtn;private View mExercisesBtn;private View mMyInfoBtn;private TextView tv_course;private TextView tv_exercises;private TextView tv_myInfo;private ImageView iv_course;private ImageView iv_exercises;private ImageView iv_myInfo;private TextView tv_back;private TextView tv_main_title;private RelativeLayout rl_title_bar;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//设置界面布局setContentView(R.layout.activity_main);//设置界面为竖屏setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);init();initBottomBar();setListener();setInitStatus();}/* * 获取界面上的UI控件*/private void init() {tv_back = (TextView)findViewById(R.id.tv_back);tv_main_title = (TextView) findViewById(R.id.tv_main_title);tv_main_title.setText("WordPress课程");rl_title_bar = (RelativeLayout)findViewById(R.id.title_bar);rl_title_bar.setBackgroundColor(Color.parseColor("#FF9900"));tv_back.setVisibility(View.GONE);initBodyLayout();}/* * 获取底部导航栏上的控件*/private void initBottomBar() {mBottomLayout = (LinearLayout) findViewById(R.id.main_bottom_bar);mCourseBtn=findViewById(R.id.bottom_bar_course_btn);mExercisesBtn= findViewById(R.id.bottom_bar_exercises_btn);mMyInfoBtn = findViewById(R.id.bottom_bar_myinfo_btn);tv_course=(TextView)findViewById(R.id.bottom_bar_text_course);tv_exercises=(TextView)findViewById(R.id.bottom_bar_text_exercises);tv_myInfo = (TextView)findViewById(R.id.bottom_bar_text_myinfo);iv_course =(ImageView)findViewById(R.id.bottom_bar_image_course);iv_exercises= (ImageView)findViewById(R.id.bottom_bar_image_exercises);iv_myInfo= (ImageView)findViewById(R.id.bottom_bar_image_myinfo);}private void initBodyLayout() {mBodyLayout = (FrameLayout) findViewById(R.id.main_body);}/* * 控件的点击事件*/@Overridepublic void onClick(View v){switch (v.getId()){//课程的点击事件case R.id.bottom_bar_course_btn:clearBottomImageState();selectDisplayView(0);break;//习题的点击事件case R.id.bottom_bar_exercises_btn:clearBottomImageState();selectDisplayView(1);break;//我的点击事件case R.id.bottom_bar_myinfo_btn:clearBottomImageState();selectDisplayView(2);break;default:break;}}/* * 设置底部三个按钮的点击监听事件*/private void setListener() {for (int i = 0; i < mBottomLayout.getChildCount();i++){mBottomLayout.getChildAt(i).setOnClickListener(this);}}/* * 清除底部按钮的选中状态*/private void clearBottomImageState() {tv_course.setTextColor(Color.parseColor("#666666"));tv_exercises.setTextColor(Color.parseColor("#666666"));tv_myInfo.setTextColor(Color.parseColor("#666666"));iv_course.setImageResource(R.drawable.main_course_icon);iv_exercises.setImageResource(R.drawable.main_exercises_icon);iv_myInfo.setImageResource(R.drawable.main_my_icon);for (int i=0;i<mBottomLayout.getChildCount();i++){mBottomLayout.getChildAt(i).setSelected(false);}}/* * 设置底部按钮的选中状态*/public void setSelectedStatus(int index){switch (index){case 0:mCourseBtn.setSelected(true);iv_course.setImageResource(R.drawable.main_course_icon_selected);tv_course.setTextColor(Color.parseColor("#0097F7"));rl_title_bar.setVisibility(View.VISIBLE);tv_main_title.setText("WordPress课程");break;case 1:mExercisesBtn.setSelected(true);iv_exercises.setImageResource(R.drawable.main_exercises_icon_selected);tv_exercises.setTextColor(Color.parseColor("#0097F7"));rl_title_bar.setVisibility(View.VISIBLE);tv_main_title.setText("WordPress习题");break;case 2:mMyInfoBtn.setSelected(true);iv_myInfo.setImageResource(R.drawable.main_my_icon_selected);tv_myInfo.setTextColor(Color.parseColor("#0097F7"));rl_title_bar.setVisibility(View.GONE);}}/* * 移除不需要的视图*/private void removeAllView(){for (int i = 0;i<mBodyLayout.getChildCount();i++){mBodyLayout.getChildAt(i).setVisibility(View.GONE);}}/* * 设置界面view的初始化状态*/private void setInitStatus() {clearBottomImageState();setSelectedStatus(0);createView(0);}/* * 显示对应的页面*/private void selectDisplayView(int index) {removeAllView();createView(index);setSelectedStatus(index);}/* * 选中视图*/private void createView(int viewIndex) {switch (viewIndex){case 0://课程界面break;case 1://习题界面break;case 2://我的界面break;}}protected long exitTime; //记录第一次点击的时间@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){if ((System.currentTimeMillis()-exitTime)>2000){Toast.makeText(MainActivity.this,"再按一次退出WordPress",Toast.LENGTH_SHORT).show();exitTime = System.currentTimeMillis();}else{MainActivity.this.finish();if (readLoginStatus()){clearLoginStatus();}System.exit(0);}return true;}return super.onKeyDown(keyCode, event);}//获取SharedPreferences中的登录状态private boolean readLoginStatus() {SharedPreferences sp = getSharedPreferences("loginInfo", Context.MODE_PRIVATE);boolean isLogin = sp.getBoolean("isLogin",false);return isLogin;}//清除SharedPreferences中的登录状态private void clearLoginStatus() {SharedPreferences sp = getSharedPreferences("loginInfo",Context.MODE_PRIVATE);SharedPreferences.Editor editor = sp.edit();  //读取编辑器editor.putBoolean("isLogin",false);   //清除登录状态editor.putString("loginUserName","");  //清除登录时的用户名editor.commit();    //提交修改}}

2、我的界面

(1)、创建我的界面

res/layout文件夹中,创建布局文件main_view_myinfo.xml

(2)、导入界面图片

将所需图片 myinfo_login_bg.pngcoures_history_icon.pngmyinfo_setting_icon.pngiv_right_arrow.png导入drawable文件夹中。

(3)、我的界面代码——main_view_myinfo.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@android:color/white"><LinearLayoutandroid:id="@+id/ll_head"android:layout_width="fill_parent"android:layout_height="240dp"android:background="@drawable/myinfo_login_bg"android:orientation="vertical"><!--  用户默认头像 --><ImageViewandroid:id="@+id/iv_head_icon"android:layout_width="70dp"android:layout_height="70dp"android:src="@drawable/default_icon"android:layout_gravity="center_horizontal"android:layout_marginTop="75dp"/><TextViewandroid:id="@+id/tv_user_name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:layout_marginTop="10dp"android:text="点击登录"android:textColor="@android:color/white"android:textSize="16sp"/></LinearLayout><Viewandroid:layout_width="fill_parent"android:layout_height="1dp"android:background="#E3E3E3"android:layout_marginTop="20dp"></View><RelativeLayoutandroid:id="@+id/rl_course_history"android:background="#F7F8F8"android:gravity="center_vertical"android:layout_marginLeft="10dp"android:layout_marginRight="10dp"android:layout_width="fill_parent"android:layout_height="50dp"><ImageViewandroid:id="@+id/iv_course_historyicon"android:src="@drawable/course_history_icon"android:layout_marginLeft="20dp"android:layout_width="20dp"android:layout_height="20dp"android:layout_centerVertical="true"/><TextViewandroid:id="@+id/tv_course_history"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="播放记录"android:textColor="#a3a3a3"android:layout_toRightOf="@+id/iv_course_historyicon"android:layout_centerVertical="true"android:layout_marginLeft="25dp"android:textSize="16sp"/><ImageViewandroid:src="@drawable/iv_right_arrow"android:layout_marginRight="25dp"android:layout_centerVertical="true"android:layout_alignParentRight="true"android:layout_width="15dp"android:layout_height="15dp" /></RelativeLayout><Viewandroid:layout_width="fill_parent"android:layout_height="1dp"android:background="#E3E3E3"></View><RelativeLayoutandroid:id="@+id/rl_setting"android:background="#F7F8F8"android:gravity="center_vertical"android:layout_marginLeft="10dp"android:layout_marginRight="10dp"android:layout_width="fill_parent"android:layout_height="50dp"><ImageViewandroid:id="@+id/iv_userinfo_icon"android:src="@drawable/myinfo_setting_icon"android:layout_marginLeft="20dp"android:layout_width="20dp"android:layout_height="20dp"android:layout_centerVertical="true"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="设置"android:textColor="#a3a3a3"android:layout_toRightOf="@+id/iv_userinfo_icon"android:layout_centerVertical="true"android:layout_marginLeft="25dp"android:textSize="16sp"/><ImageViewandroid:src="@drawable/iv_right_arrow"android:layout_marginRight="25dp"android:layout_centerVertical="true"android:layout_alignParentRight="true"android:layout_width="15dp"android:layout_height="15dp" /></RelativeLayout><Viewandroid:layout_width="fill_parent"android:layout_height="1dp"android:background="#E3E3E3"></View>
</LinearLayout>

(4)、创建AnalysisUtils工具类

utils包中创建一个java类,命名为AnalysisUtils,代码如下
package com.boxuegu.utils;import android.content.Context;
import android.content.SharedPreferences;public class AnalysisUtils {/* * 从SharedPreferences中读取用户名 */public static String readLoginUserName(Context context){SharedPreferences sp = context.getSharedPreferences("loginInfo",Context.MODE_PRIVATE);String userName = sp.getString("loginUserName","");return userName;}
}

(5)、我的界面逻辑代码

中com.boxuegu包,创建一个view包,在view包中创建一个java类,命名为MyInfoView。代码如下
package com.boxuegu.view;import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.boxuegu.R;
import com.boxuegu.activity.LoginActivity;
import com.boxuegu.activity.SettingActivity;
import com.boxuegu.utils.AnalysisUtils;public class MyInfoView {public ImageView iv_head_icon;private LinearLayout ll_head;private RelativeLayout rl_course_history,rl_setting;private TextView tv_user_name;private Activity mContext;private LayoutInflater mInflater;private View mCurrentView;public MyInfoView(Activity context){//为之后将layout转化为view时用mContext= context;mInflater= LayoutInflater.from(mContext);}private void createView(){initView();}/* * 获取界面控件*/private void initView() {//设置布局文件mCurrentView = mInflater.inflate(R.layout.main_view_myinfo,null);ll_head = (LinearLayout)mCurrentView.findViewById(R.id.ll_head);iv_head_icon = (ImageView) mCurrentView.findViewById(R.id.iv_head_icon);rl_course_history = (RelativeLayout) mCurrentView.findViewById(R.id.rl_course_history);rl_setting = (RelativeLayout) mCurrentView.findViewById(R.id.rl_setting);tv_user_name = (TextView) mCurrentView.findViewById(R.id.tv_user_name);mCurrentView.setVisibility(View.VISIBLE);setLoginParams(readLoginStatus());ll_head.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//判断是否登录if (readLoginStatus()){//已登录跳转到个人资料界面}else{//未登录跳转到登录界面Intent intent = new Intent(mContext, LoginActivity.class);mContext.startActivityForResult(intent,1);}}});rl_course_history.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {if (readLoginStatus()){//跳转到播放记录界面}else{Toast.makeText(mContext,"您还未登录,请先登录",Toast.LENGTH_SHORT).show();}}});rl_setting.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (readLoginStatus()){//跳转到设置界面 }else{Toast.makeText(mContext,"您还未登录,请先登录",Toast.LENGTH_SHORT).show();}}});}/* * 登录成功后设置我的界面*/public void setLoginParams(boolean isLogin){if (isLogin){tv_user_name.setText(AnalysisUtils.readLoginUserName(mContext));}else{tv_user_name.setText("点击登录");}}/* * 获取当前在导航栏上方对应的view*/public View getView(){if (mCurrentView==null){createView();}return mCurrentView;}/* * 显示当前导航栏上方所对应的view界面*/public void showView(){if (mCurrentView==null){createView();}mCurrentView.setVisibility(View.VISIBLE);}/* * 从SharedPreferences中读取登录状态*/private boolean readLoginStatus(){SharedPreferences sp = mContext.getSharedPreferences("loginInfo", Context.MODE_PRIVATE);boolean isLogin = sp.getBoolean("isLogin",false);return isLogin;}}

(6)、修改MainActivity.java

在文件中的40行代码下面加入如下代码,导入相应的包
private MyInfoView mMyInfoView;
找到MainActivity.java的createView方法,当case为2时,在注释//我的界面下方添加如下代码
if (mMyInfoView == null){mMyInfoView = new MyInfoView(this);mBodyLayout.addView(mMyInfoView.getView());}else {mMyInfoView.getView();}mMyInfoView.showView();
修改登录成功时的代码,在MainActivity.java中加入以下代码
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (data!=null){//从设置界面或登录界面传递过来的登录状态boolean isLogin = data.getBooleanExtra("isLogin",false);if (isLogin){      //登录成功时显示课程界面clearBottomImageState();selectDisplayView(0);}if (mMyInfoView != null){    //登录成功或退出登录时根据islogin设置我的界面mMyInfoView.setLoginParams(isLogin);}}}

二、设置界面

1、创建设置界面

com.boxuegu.activity包中新建一个类,命名为SettingActivity。在res/layout文件夹下新建布局文件,命名为activity_setting

2、设置界面代码activity_setting.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@android:color/white"><include layout="@layout/main_title_bar"/><Viewandroid:layout_width="fill_parent"android:layout_height="1dp"android:layout_marginTop="15dp"android:background="#E3E3E3"/><RelativeLayoutandroid:id="@+id/rl_modify_psw"android:layout_width="fill_parent"android:layout_height="50dp"android:background="#F7F8F8"android:gravity="center_vertical"android:paddingLeft="10dp"android:paddingRight="10dp"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:layout_marginLeft="25dp"android:text="修改密码"android:textColor="#A3A3A3"android:textSize="16sp"/><ImageViewandroid:layout_width="15dp"android:layout_height="15dp"android:layout_alignParentRight="true"android:layout_centerVertical="true"android:layout_marginRight="25dp"android:src="@drawable/iv_right_arrow"/></RelativeLayout><Viewandroid:layout_width="fill_parent"android:layout_height="1dp"android:background="#E3E3E3"/><RelativeLayoutandroid:id="@+id/rl_security_setting"android:layout_width="fill_parent"android:layout_height="50dp"android:background="#F7F8F8"android:gravity="center_vertical"android:paddingLeft="10dp"android:paddingRight="10dp"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:layout_marginLeft="25dp"android:text="设置密保"android:textColor="#A3A3A3"android:textSize="16sp"/><ImageViewandroid:layout_width="15dp"android:layout_height="15dp"android:layout_alignParentRight="true"android:layout_centerVertical="true"android:layout_marginRight="25dp"android:src="@drawable/iv_right_arrow"/></RelativeLayout><Viewandroid:layout_width="fill_parent"android:layout_height="1dp"android:layout_marginTop="15dp"android:background="#E3E3E3"/><RelativeLayoutandroid:id="@+id/rl_exit_login"android:layout_width="fill_parent"android:layout_height="50dp"android:background="#F7F8F8"android:gravity="center_vertical"android:paddingLeft="10dp"android:paddingRight="10dp"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:layout_marginLeft="25dp"android:text="退出登录"android:textColor="#A3A3A3"android:textSize="16sp"/><ImageViewandroid:layout_width="15dp"android:layout_height="15dp"android:layout_alignParentRight="true"android:layout_centerVertical="true"android:layout_marginRight="25dp"android:src="@drawable/iv_right_arrow"/></RelativeLayout><Viewandroid:layout_width="fill_parent"android:layout_height="1dp"android:background="#E3E3E3"/>
</LinearLayout>

3、设置界面逻辑代码——SettingActivity.java

package com.boxuegu.activity;import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;import com.boxuegu.R;public class SettingActivity extends AppCompatActivity {public static  SettingActivity instance = null;private TextView tv_main_title;private TextView tv_back;private RelativeLayout rl_title_bar;private RelativeLayout rl_modify_psw;private RelativeLayout rl_security_setting;private RelativeLayout rl_exit_login;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//设置界面布局setContentView(R.layout.activity_setting);//设置界面为竖屏setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);instance = this;init();}//获取界面控件private void init() {tv_main_title = (TextView) findViewById(R.id.tv_main_title);tv_main_title.setText("设置");tv_back = (TextView) findViewById(R.id.tv_back);rl_title_bar = (RelativeLayout) findViewById(R.id.title_bar);rl_title_bar.setBackgroundColor(Color.parseColor("#FF9900"));rl_modify_psw = (RelativeLayout) findViewById(R.id.rl_modify_psw);rl_security_setting = (RelativeLayout) findViewById(R.id.rl_security_setting);rl_exit_login = (RelativeLayout) findViewById(R.id.rl_exit_login);tv_back.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {SettingActivity.this.finish();}});//修改密码的点击事件rl_modify_psw.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//跳转到修改密码界面}});//设置密保的点击事件rl_security_setting.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//跳转到设置密保界面}});//退出登录的点击事件rl_exit_login.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(SettingActivity.this,"退出登录成功",Toast.LENGTH_SHORT).show();clearLoginStatus();   //清除登录状态和登录的用户名//退出成功后把退出成功的状态传递到MainActivity中Intent data = new Intent();data.putExtra("isLogin",false);setResult(RESULT_OK,data);SettingActivity.this.finish();}});}//清除SharedPreferences中的登录状态和登录时的用户名private void clearLoginStatus(){SharedPreferences sp = getSharedPreferences("loginInfo", Context.MODE_PRIVATE);SharedPreferences.Editor editor = sp.edit();  //获取编辑器editor.putBoolean("isLogin",false);   //清除登录状态editor.putString("loginUserName","");  //清除用户名editor.commit();  //提交修改}
}

4、修改我的界面代码

MyInfoView.java文件中的initView方法,找到注释//跳转到设置界面下方添加如下代码
 Intent intent = new Intent(mContext, SettingActivity.class);mContext.startActivityForResult(intent,1);

三、运行效果

Android项目实战系列—基于博学谷 开源地址

               

Android项目实战系列—基于博学谷(四)我的模块(上)相关推荐

  1. android博学谷布局,Android项目实战系列—基于博学谷(四)我的模块(下)

    image 由于这个模块内容较多,篇幅较长,请耐心阅读. "我"的模块分为四个部分 一.修改密码 1.创建修改密码界面 在com.boxuegu.activity包中,创建一个ja ...

  2. android博学谷实验报告,Android项目实战系列—基于博学谷(四)我的模块(上)...

    image 由于这个模块内容较多,篇幅较长,请耐心阅读. "我"的模块分为四个部分 一."我"的界面 1.底部导航栏 (1).导入界面图片 将底部导航栏所需图片 ...

  3. android博学谷我的代码,Android项目实战系列—基于博学谷(四)我的模块(下)...

    由于这个模块内容较多,篇幅较长,请耐心阅读. "我"的模块分为四个部分 [ ] [我的界面]() [ ] [设置界面]() [x] [修改密码界面]() [x] [设置密保和找回密 ...

  4. android项目实战博学谷百度云,Android项目实战系列—基于博学谷(七)课程模块(下)...

    由于这个模块内容较多,分为上.中.下 三篇博客分别来讲述,请耐心阅读. 课程模块分为四个部分 [ ] [课程列表]() [ ] [课程详情]() [x] [视频播放]() [x] [播放记录]() 课 ...

  5. Android项目实战系列—基于博学谷(六)习题模块

    由于这个模块内容较多,篇幅较长,请耐心阅读. 习题模块分为两个部分 习题列表界面 习题详情界面 一.习题列表界面 1.习题界面 (1).创建习题界面 在res/layout文件夹中,新建一个布局文件, ...

  6. Android项目实战系列—基于博学谷(七)课程模块(上)

    由于这个模块内容较多,分为上.中.下 三篇博客分别来讲述,请耐心阅读. 课程模块分为四个部分 课程列表 课程详情 视频播放 播放记录 课程模块(上)主要讲述课程列表部分 一.水平滑动广告栏界面 1.创 ...

  7. Android项目实战系列—基于博学谷(七)课程模块(下)

    由于这个模块内容较多,分为上.中.下 三篇博客分别来讲述,请耐心阅读. 课程模块分为四个部分 课程列表 课程详情 视频播放 播放记录 课程模块(下)主要讲述视频播放和播放记录两个部分 一.视频播放 1 ...

  8. android中私有方法 继承,Android项目实战系列—基于博学谷(五)个人资料

    由于这个模块内容较多,篇幅较长,请耐心阅读. 个人资料模块分为两个部分 [x] [个人资料]() [x] [资料修改]() 一.个人资料 1.个人资料界面 (1).创建个人资料界面 在com.buxu ...

  9. android注册文件打开,Android项目实战系列—基于博学谷(三)注册与登录模块

    由于这个模块内容较多,篇幅较长,请耐心阅读. 注册与登录模块分为三个部分 [x] [欢迎界面]() [x] [注册界面]() [x] [登录界面]() 一.欢迎界面 1.创建工程,命名为BoXueGu ...

最新文章

  1. 基于平面几何精确且鲁棒的尺度恢复单目视觉里程计
  2. NetXMS 1.2.6 发布,系统监控工具
  3. CISSP的成长之路(二):为什么要获得CISSP认证
  4. 阿里巴巴有一群全年无休从不领工资的高智商员工
  5. Tableau实战系列浏览 Tableau 环境(六) -工作簿和工作表
  6. isc-dhcp监听网口的实现步骤
  7. vue的钩子函数created以及mounted的示意(转载)
  8. Python中字符串操作函数string.split('str1')和string.join(ls)
  9. 搭建一个微服务商城到底可以有多快?
  10. 【Android framework】AndroidManagerService初始化流程
  11. mapbox 导航_寻宝风格导航地图 Treasure 诞生记 | Mapbox 地图设计思路
  12. java操作mysql数据库实例_jdbc操作mysql数据库实例
  13. C/C++开发_C语言里类似C++的构造与析构
  14. c语言程序设计答案 第五版 谭浩强
  15. oki5530sc打印错误_四通OKI5530常见故障分析
  16. Complex Multiplier IP 使用教程(源码)
  17. 王炜:城市虚拟交通系统与交通发展决策支持模式研究
  18. 基于Cesium的火箭发射演示
  19. 武汉php东和,武汉--从轨道交通线网规划看黄陂、东西湖和江夏等新兴区域发展潜力...
  20. 毫米波雷达的系统设计细节(1) - 从雷达方程到雷达威力图

热门文章

  1. pythongui界面管理系统_Python实现GUI学生信息管理系统
  2. oc addChildViewController
  3. Portainer容器可视化工具
  4. 感恩节,感谢2022的转变,有在好好生活!
  5. Restful 风格请求
  6. EDK II之USB主控制器(EHCI)驱动的实现框架
  7. galera-mariadb集群
  8. 2022中国MarTech领域最具商业合作价值企业盘点
  9. MySQL引擎和区别
  10. 什么是计算机立体化教程,全国计算机等级考试立体化应试教程