重新启动应用程序时重新启动Android活动
我在android应用程序中有3个活动。当我在每个活动中按下后退按钮时,应用程序将退出。使用以下代码 当我从第三个活动按back键时,应用程序将正常退出,但当我通过单击应用程序图标重新启动应用程序时,第三个活动将再次启动。但我需要在“重新启动”时启动我的主要活动 我试着在“onResume”上写代码,但没有成功重新启动应用程序时重新启动Android活动,android,android-activity,onresume,Android,Android Activity,Onresume,我在android应用程序中有3个活动。当我在每个活动中按下后退按钮时,应用程序将退出。使用以下代码 当我从第三个活动按back键时,应用程序将正常退出,但当我通过单击应用程序图标重新启动应用程序时,第三个活动将再次启动。但我需要在“重新启动”时启动我的主要活动 我试着在“onResume”上写代码,但没有成功 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEven
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK)
{
moveTaskToBack(true);
return true;
}
return super.onKeyDown(keyCode, event);
}
请帮帮我。提前感谢moveTaskToBack()
将包含此活动的任务移动到活动堆栈的后面
在OnBackpressed()
中执行,并在所有活动中使用finish()
。(因为您说要在按下后退按钮后完成所有活动)
简单地说,在代码中执行以下操作:
在活动1中
Intent intent=new Intent(activity1.this,activity2.class);
startActivity(intent);
finish();
在活动2中
Intent intent=new Intent(activity2.this,activity3.class);
startActivity(intent);
finish();
如果在前两个活动中使用此选项,则在第三个活动中,无需处理OnBackpressed()
。因为当活动检测到用户按下后退键时,会调用OnBackpressed()
。默认实现只是完成当前活动,但您可以覆盖它以执行任何您想要的操作。moveTaskToBack()
将包含此活动的任务移动到活动堆栈的后面
在OnBackpressed()
中执行,并在所有活动中使用finish()
。(因为您说要在按下后退按钮后完成所有活动)
简单地说,在代码中执行以下操作:
在活动1中
Intent intent=new Intent(activity1.this,activity2.class);
startActivity(intent);
finish();
在活动2中
Intent intent=new Intent(activity2.this,activity3.class);
startActivity(intent);
finish();
如果在前两个活动中使用此选项,则在第三个活动中,无需处理
OnBackpressed()
。因为当活动检测到用户按下后退键时,会调用OnBackpressed()
。默认实现只是完成当前活动,但您可以覆盖它以执行任何您想要的操作。在AndroidManifest.xml中使用此代码,并在首次启动活动中使用android:clearTaskOnLaunch=“true”
<activity
android:name="com.example.package.SplashActivity"
android:label="@string/app_name"
android:clearTaskOnLaunch="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
在AndroidManifest.xml中使用此代码,并在首次启动活动中使用android:clearTaskOnLaunch=“true”
<activity
android:name="com.example.package.SplashActivity"
android:label="@string/app_name"
android:clearTaskOnLaunch="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
如果要在所有3个活动中退出,则必须在启动新活动时使用
finish()
关闭当前活动。如果要在所有3个活动中退出,则必须在启动新活动时使用finish()
关闭当前活动
public void onButtonClick() // Some method
{
startActivity(intentForB);
finish();
}
public void onButtonClick()
{
startActivity(intentForC);
finish();
}
public void onButtonClick() // Some method
{
startActivity(intentForB);
finish();
}
public void onButtonClick()
{
startActivity(intentForC);
finish();
}
希望这有帮助。在首次启动活动中,在您的AndroidManifest.xml和android:launchMode=“singleTop”中使用此代码
<activity
android:name="com.example.package.SplashActivity"
android:label="@string/app_name"
android:clearTaskOnLaunch="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
在首次启动活动中,在AndroidManifest.xml和android:launchMode=“singleTop”中使用此代码
<activity
android:name="com.example.package.SplashActivity"
android:label="@string/app_name"
android:clearTaskOnLaunch="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
您可以使用以下方法解决此问题 在第三个活动类中,输入以下代码
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
startActivity(new Intent(getBaseContext(), YourSecondActivity.class));
finish();
}
同样的方法,你可以把第二个活动课
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
startActivity(new Intent(getBaseContext(), YourFirstActivity.class));
finish();
}
最后你可以把这个放在你的主课上
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
finish();
}
你可以用以下方法解决这个问题 在第三个活动类中,输入以下代码
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
startActivity(new Intent(getBaseContext(), YourSecondActivity.class));
finish();
}
同样的方法,你可以把第二个活动课
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
startActivity(new Intent(getBaseContext(), YourFirstActivity.class));
finish();
}
最后你可以把这个放在你的主课上
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
finish();
}
在back button方法中添加此.finish()行。这意味着一旦用户转到下一个屏幕,上一个屏幕对他不可用?@Sagarmiyad back按钮的默认行为是对当前活动调用
finish()
。您不需要重写该方法并自己执行。请在back button方法中添加此.finish()行。这意味着,一旦用户转到下一个屏幕,上一个屏幕对他不可用?@Sagarmiyad back按钮的默认行为是对当前活动调用finish()
。您不需要重写该方法并自己执行。谢谢您的评论。。。现在,当我按下back键时,它将转到Exit以外的第二个视图。您可以在每个活动中使用OnBackpressed()来处理此问题。因为默认实现只是完成当前活动,所以当您移动到其他活动时,请在所有活动中使用finish()。谢谢您的评论。。。现在,当我按下back键时,它将转到Exit以外的第二个视图。您可以在每个活动中使用OnBackpressed()来处理此问题。因为默认实现只是完成当前活动,所以当您移动到其他活动时,请在所有活动中使用finish()