android登录页面跳转的代码,[Android] 优雅的处理登录页面跳转逻辑

一般有用户系统的应用都会有以下两种需求:

1、在执行某个动作时需要判断当前用户是否登录,如果没有登录则跳转至登录页面,登录成功后返回原页面但不执行任何操作,如果已经登录则直接执行相应的操作。

2、在执行某个动作时需要判断当前用户是否登录,如果没有登录则跳转至登录页面,登录成功后返回原页面继续执行相应的操作,如果已经登录则直接执行相应的操作。

但往往一个应用中会有很多地方需要有这样的判断逻辑,所以直觉告诉我们应该把这一重复的处理逻辑封装一下:

public class LoginUtil extends Activity {

private int REQUEST_CODE_LOGIN = 1;

static LoginCallback mCallback;

public interface LoginCallback {

void onLogin();

}

@Override protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

Intent intent = new Intent(this, LoginActivity.class);

startActivityForResult(intent, REQUEST_CODE_LOGIN);

}

public static void checkLogin(Context context, LoginCallback callback) {

//此处检查当前的登录状态

boolean login = AccountMgr.get().isLogin();

if (login) {

callback.onLogin();

} else {

mCallback = callback;

Intent intent = new Intent(context, LoginUtil.class);

context.startActivity(intent);

}

}

public static void checkLogin(Context context, LoginCallback logged, LoginCallback callback) {

//此处检查当前的登录状态

boolean login = AccountMgr.get().isLogin();

if (login) {

logged.onLogin();

} else {

mCallback = callback;

Intent intent = new Intent(context, LoginUtil.class);

context.startActivity(intent);

}

}

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {

finish();

if (requestCode == REQUEST_CODE_LOGIN && resultCode == RESULT_OK && mCallback != null) {

mCallback.onLogin();

}

mCallback = null;

}

}复制代码

2、在AndroidManifest.xml里配置此activity的主题

注意:在values中创建主题:复制代码

在values-v23中创建适配主题:复制代码

3、在登录页面成功登录后执行下面语句:

@Subscribe(threadMode = ThreadMode.MAIN)

public void onEventMainThread(AccountEvent.LoginEvent event) {

setResult(Activity.RESULT_OK);

finish();

}复制代码

4、在需要判断登录的地方直接调用下面两种重载方法即可:LoginUtil.checkLogin(getActivity(), new LoginUtil.LoginCallback() {

public void onLogin() {

//已经登录和未登录状态下进行的操作

}

});复制代码

LoginUtil.checkLogin(getActivity(), new LoginUtil.LoginCallback() {

@Override public void onLogin() {

//已经登录状态进行的操作

}

}, null);复制代码

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio是一款由Google开发的集成开发环境(IDE),用于开发Android应用程序。要实现Android Studio登录界面跳转,需要编写两个Activity,一个是登录界面,一个是注册界面。在登录界面中,需要添加一个登录按钮和一个文本控件用于提示用户还没有账号。在注册界面中,需要添加一个返回按钮,用于返回登录界面。在登录按钮的点击事件中,需要调用Intent类的构造方法,将当前Activity和目标Activity作为参数,然后调用startActivity方法实现跳转。以下是一个简单的Android Studio登录界面跳转的代码示例: ``` <!-- 登录界面布局文件 --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <EditText android:id="@+id/et_username" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入用户名" /> <EditText android:id="@+id/et_password" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入密码" android:inputType="textPassword" /> <Button android:id="@+id/btn_login" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="登录" android:onClick="login" /> <TextView android:id="@+id/tv_register" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="还没有账号?点击注册" android:onClick="jumpToRegister" /> </LinearLayout> // 登录界面的Activity public class LoginActivity extends AppCompatActivity { private EditText etUsername; private EditText etPassword; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); etUsername = findViewById(R.id.et_username); etPassword = findViewById(R.id.et_password); } public void login(View view) { // 处理登录逻辑 } public void jumpToRegister(View view) { Intent intent = new Intent(LoginActivity.this, RegisterActivity.class); startActivity(intent); } } // 注册界面的Activity public class RegisterActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_register); } public void back(View view) { finish(); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值