游客模式,记住当前点击的位置,登陆成功后回调。

来源:互联网 发布:js获取iframe id 编辑:程序博客网 时间:2024/04/19 06:27


有时候一些app 有游客模式,有些关键位置点击需要登陆(比如说购买),

这时候登陆成功之后,我们需要回调这个购买按钮的逻辑。


实现逻辑:

1、点击的时候根据 token(可能判断点不同)是否存在判断是否需要重新登陆,如果需要的话,就跳转登陆,并且记录当前点击的view

2、在登陆界面销毁的时候,进行view点击事件的调用。


逻辑比较简单,希望大神给出更好方案!



/**
* 使用范例:(需要用到的地方,点击事件里面添加如下判断,如果需要登陆直接retrun即可)
*/
// case R.id.tv_product_details_buy_buy:
// if (MyLoginUtils.getInstance().isNeedLogin(this,v)) {
// return;
// }
// ..点击事件逻辑...
 
/**
* 登陆工具类
* Created by zc on 2016/6/8.
*/
public class MyLoginUtils {
 
 
/**
* 记录当前点击的位置,由于要求不是很严格,暂时不设计成静态的
*/
public View mView;
private static MyLoginUtils instance = null;
 
public static MyLoginUtils getInstance() {
if (instance == null) {
instance = new MyLoginUtils();
}
return instance;
}
 
/**
* 是否需要登陆
*
* @param context
* @param view 需要回调点击事件的view
* @return true 需要
*/
public boolean isNeedLogin(Context context, View view) {
if (TextUtils.isEmpty(LoginStatus.getToken())) {
goToLogin(context, view);
return true;
} else {
return false;
}
}
 
 
/**
* 登陆
*
* @param context
* @param view 需要回调点击事件的view
*/
public void goToLogin(Context context, View view) {
this.mView = view;
context.startActivity(new Intent(context, LoginActivity.class));
}
 
/**
* 用于回调的时候获取view
* 在LoginActivity的 onDestory方法里面触发view的点击事件
*
* @return
*/
public View getView() {
return mView;
}
 
/**
* 用于清空view
*
* @param view
*/
public void setView(View view) {
this.mView = view;
}
}


在LoginActivity的onDestroy 中添加回调
@Override
protected void onDestroy() {
super.onDestroy();
if (MyLoginUtils.getInstance().getView() != null && LoginStatus.getToken() != null) {//登陆状态下,有记录的控件
MyLoginUtils.getInstance().getView().performClick();
//清空
MyLoginUtils.getInstance().setView(null);
}
 
}


0 0
原创粉丝点击