[英]How to switch between activities
在我的应用程序中,我有三个活动
活动1
活动2
活动3
如何在活动之间进行切换。
那怎么办呢?
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.settingOpt:
Intent intent = new Intent(this, SettingsForm.class);
this.startActivity(intent);
this.finish();
break;
case R.id.reminderOpt:
Intent intentR = new Intent(this, ReminderForm.class);
this.startActivity(intentR);
break;
case R.id.helpOpt:
Intent intentH = new Intent(this, HelpForm.class);
this.startActivity(intentH);
this.finish();
break;
case R.id.shareOpt:
Intent share = new Intent(android.content.Intent.ACTION_SEND);
share.setType("text/plain");
share.putExtra(Intent.EXTRA_SUBJECT, "Name of the thing to share");
share.putExtra(Intent.EXTRA_TEXT, "www.gmail.com");
startActivity(Intent.createChooser(share, "Share LoveCycle's website link with your friends"));
break;
default:
return super.onOptionsItemSelected(item);
}
return true;
}
对于第一个问题
调用活动3后,在活动2中使用finish()。
当您按下主页按钮时,您可能应该关闭该应用程序。 因为您的应用程序将保留其状态直到关闭。
当我从Activity3单击“后退”按钮时,我应该始终转到Activity1,而不是Activity2:
在Activity3中对后退按钮按下事件使用以下方法:
setResult(R.id.common_backToActivity1);
然后在Activity2中捕获该setResult,如下所示,并关闭此Activity:
protected void onActivityResult(int requestCode, int resultCode,Intent data) {
switch(resultCode){
case R.id.common_backToActivity1:
closeActivity(); //Finish Activity2 in this method
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
然后,您将直接进入Activity1。
尝试这样的事情:
Home Key
您无法控制Home键的行为。 当按下Home键时,您的应用程序将发送到后台,而当您再次启动应用程序时,它将进入您离开的状态。 但是,此行为并不一致,因为它取决于设备。 如果设备需要内存或应用程序正在使用的任何资源,则它可以finish()
应用程序。
for your activity:
使用startActivityForResult()启动活动3,然后在活动3上按finish()
,当您在活动2 finish()
中的onActivityResult()
中收到调用时,它将在那里回到活动1。
对于第一个问题。 您可以覆盖后退按钮,并检查当前正在进行的活动并根据该活动处理去向。
第二个问题。
在清单文件的启动活动中放入android:clearTaskOnLaunch="true"
。 这将使您的应用程序始终在重新启动时重新开始。
您应该实施Intent调用以遵循此要求。 而不是从Activity 2转到Activity 3,您应该完成Activity 2并返回一些值,该值提示Activity 1然后调用Activity3。至于当您按下主屏幕时,请将相同的代码添加到OnResume()OnCreate()区域中这样它就知道总是要加载哪个意图/活动。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.