Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重新启动应用程序时重新启动Android活动_Android_Android Activity_Onresume - Fatal编程技术网

重新启动应用程序时重新启动Android活动

重新启动应用程序时重新启动Android活动,android,android-activity,onresume,Android,Android Activity,Onresume,我在android应用程序中有3个活动。当我在每个活动中按下后退按钮时,应用程序将退出。使用以下代码 当我从第三个活动按back键时,应用程序将正常退出,但当我通过单击应用程序图标重新启动应用程序时,第三个活动将再次启动。但我需要在“重新启动”时启动我的主要活动 我试着在“onResume”上写代码,但没有成功 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEven

我在android应用程序中有3个活动。当我在每个活动中按下后退按钮时,应用程序将退出。使用以下代码

当我从第三个活动按back键时,应用程序将正常退出,但当我通过单击应用程序图标重新启动应用程序时,第三个活动将再次启动。但我需要在“重新启动”时启动我的主要活动

我试着在“onResume”上写代码,但没有成功

@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()
关闭当前活动

  • 创建三个活动-A、B和C
  • 在活动A中-调用startActivity(B)时,也调用finish()。示例-

     public void onButtonClick() // Some method 
     {
        startActivity(intentForB);
        finish();
    }
    
  • 同样,当从B到C时-

     public void onButtonClick()
     {
        startActivity(intentForC);
        finish();
     }
    
  • 当用户在活动C上并且按下后退按钮时,应用程序将关闭。(无需显式地写回按钮处理)

  • 希望这有帮助

  • 创建三个活动-A、B和C
  • 在活动A中-调用startActivity(B)时,也调用finish()。示例-

     public void onButtonClick() // Some method 
     {
        startActivity(intentForB);
        finish();
    }
    
  • 同样,当从B到C时-

     public void onButtonClick()
     {
        startActivity(intentForC);
        finish();
     }
    
  • 当用户在活动C上并且按下后退按钮时,应用程序将关闭。(无需显式地写回按钮处理)


  • 希望这有帮助。

    在首次启动活动中,在您的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()