2013-05-10 203 views
0

我在android应用程序中有3个活动。当我按下每个活动中的按钮时,该应用程序将退出。使用下面的代码。在重新启动应用程序时重新启动Android活动

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

我试过在“onResume”上写代码但不工作。

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

请帮帮我。在此先感谢

+0

在后退按钮方法中加上this.finish()行。 – Riser 2013-05-10 05:32:43

+0

这意味着一旦用户转到下一个屏幕,上一个屏幕不可用于他? – Anukool 2013-05-10 05:36:32

+0

@SagarMaiyad BACK按钮的默认行为是调用当前活动的'finish()'。你不需要重写该方法并自己做。 – 2013-05-10 12:23:59

回答

1
  1. 创建三个活动 - A,B和C
  2. 在活动A - 调用startActivity(B)时,呼叫结束()也。示例 -

    public void onButtonClick() // Some method 
    { 
        startActivity(intentForB); 
        finish(); 
    } 
    
  3. 同样的B去到C时 -

    public void onButtonClick() 
    { 
        startActivity(intentForC); 
        finish(); 
    } 
    
  4. 当用户在活动℃,当他按下后退按钮,应用程序会关闭掉(不需以显式地回写按钮处理)。

希望这会有所帮助。

+0

哇!谢谢你救了我的一天!!!!! – ramesh 2013-05-10 05:59:23

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()在活动检测到用户按下后退键时被调用。默认实现只是完成当前活动,但您可以覆盖它以执行任何您想要的操作。

+0

感谢您的评论...现在,当我按下回车键时,它将转到第二个视图,而不是退出 – ramesh 2013-05-10 05:36:07

+0

,您可以在每个活动中使用OnBackpressed()来处理此问题。因为默认实现只是完成当前活动 – 2013-05-10 05:37:18

+0

当您移动到另一个活动时,在所有活动中使用finish() – 2013-05-10 05:38:13

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; 
    } 
0

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

0

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

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(); 
}