我希望用户无需登录即可访问MainActivity
(主页)。为此,当用户打开应用时,MainActivity
检查用户是否未登录,然后通过LoginActivity
转到Intent
。
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
但是2个问题发生了:
请帮我解决这个问题。
MainActivity:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAuth = FirebaseAuth.getInstance();
mAuth.addAuthStateListener(new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user == null){
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
}
});
mDataRef = FirebaseDatabase.getInstance().getReference().child("BlogApp").child("Posts");
mBlogList = findViewById(R.id.blogListId);
mBlogList.setLayoutManager(new LinearLayoutManager(this));
adapterSetUp();
mBlogList.setAdapter(adapter); // load blog posts
}
答案 0 :(得分:2)
在finish()
之后调用startActivity
方法:
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
答案 1 :(得分:0)
您应该启动一个启动器活动,该活动可以为未注册的用户加载登录活动,也可以为已注册的用户加载主要活动。 另一种可以实现所需功能的方法是使用两个片段创建主要活动,一个用于主页,另一个用于登录页面,而不是您可以决定要呈现的片段。 希望它有所帮助,祝你好运!
答案 2 :(得分:0)
使用finishAffinity()
方法完成当前活动和所有父活动。但它仅适用于API 16+
。
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finishAffinity();
在startActivity之后调用finishAffinity()
方法。