0

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

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

我尝试在“onResume”上编写代码,但没有工作。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) 
{
    if (keyCode == KeyEvent.KEYCODE_BACK) 
    {
        moveTaskToBack(true);
        return true;
    }
        return super.onKeyDown(keyCode, event);
}

请帮我。提前致谢

4

6 回答 6

2

您可以通过使用以下方式解决此问题 在您的第三个 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();
}
于 2013-05-10T06:02:51.717 回答
1
  1. 创建三个活动 - A、B 和 C
  2. 在 Activity A - 调用 startActivity(B) 时,也调用 finish()。例子 -

     public void onButtonClick() // Some method 
     {
        startActivity(intentForB);
        finish();
    }
    
  3. 同样,当从 B 去 C -

     public void onButtonClick()
     {
        startActivity(intentForC);
        finish();
     }
    
  4. 当用户在 Activity C 上并按下返回按钮时,应用程序将关闭。(无需显式编写返回按钮处理)。

希望这可以帮助。

于 2013-05-10T05:43:20.300 回答
0

moveTaskToBack()将包含此活动的任务移到活动堆栈的后面。

在您的所有活动中执行OnBackpressed()并使用它。finish()(因为您说要在按下返回按钮时完成所有活动)

public void OnBackpressed()
{
 finish();
}

简单地说,在你的代码中这样做:

activity 1

Intent intent=new Intent(activity1.this,activity2.class);
startActivity(intent);
finish();

activity 2

Intent intent=new Intent(activity2.this,activity3.class);
startActivity(intent);
finish();

如果你在前两个活动中使用了这个,那么在第三个活动中不需要处理OnBackpressed()。因为OnBackpressed()当活动检测到用户按下返回键时调用。默认实现只是完成当前活动,但您可以覆盖它来做任何您想做的事情。

于 2013-05-10T05:27:07.377 回答
0

在您的 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>

如果您想使用关键事件,请在您的活动中使用此代码:

@Override
    public boolean dispatchKeyEvent(KeyEvent event)
    {
        boolean result = false;
        switch(event.getKeyCode())
        {
            case KeyEvent.KEYCODE_BACK:
                finish(); // or moveTaskToBack(true);
                result = true;
                break;
             default:
                result= super.dispatchKeyEvent(event);
                break;
         }
        return result;
    }
于 2013-05-10T05:32:30.237 回答
0

如果要退出所有 3 个 Activity,则必须finish()在启动新 Activity 时关闭当前使用的 Activity。

于 2013-05-10T05:42:10.083 回答
0

在您的 AndroidManifest.xml 和 android:launchMode="singleTop" 首次启动活动中使用此代码。

于 2013-05-10T05:47:29.873 回答