Java 如何终止一个活动并切换到另一个活动?
我在做这样的事情:Java 如何终止一个活动并切换到另一个活动?,java,android,Java,Android,我在做这样的事情: public class MyActivity extends Activity { @Override public void onStart() { super.onStart(); User user = new Entrance().enter(); // continue with user, since it's a valid one } } // I'm using this class from many activiti
public class MyActivity extends Activity {
@Override
public void onStart() {
super.onStart();
User user = new Entrance().enter();
// continue with user, since it's a valid one
}
}
// I'm using this class from many activities
public class Entrance {
public User enter() {
try {
User user = new Hub().enter();
} catch (AuthenticationFailedException ex) {
this.startActivity(new Intent(this, LoginActivity.class));
this.finish();
}
return user;
}
}
此代码不起作用,因为finish()
不会引发异常并让执行流继续。此场景的正确设计是什么?您可以使用此方法分离逻辑流
public void onStart() {
super.onStart();
User user = new Entrance().enter();
// continue with user, since it's a valid one
if (isFinishing()) {
...
} else {
...
}
}
由于您使用的是来自多个活动的入口类,因此应该将活动的上下文传递给入口类中的enter()方法。其内容应如下:
public User enter(Context context) {
try {
User user = new Hub().enter();
} catch (AuthenticationFailedException ex) {
context.startActivity(new Intent(context, LoginActivity.class));
context.finish();
}
return user;
}
尝试此操作,首先创建意图,然后完成活动通过意图启动下一个/所需的活动
Intent loginIntent=new Intent(MyActivity.this, LoginActivity.class);
MyActivity.this.finish();
startActivity(loginIntent);
请在manifest.return null中为MyActivity尝试“noHistory”,或引发异常。