2014-05-12 116 views
-2

我有两项活动:MainActivityEventActivity检查使用意图的活动是否还活着

每当我打开我的应用程序(默认为MainActivity)并且它在SharedPreferences中有一个特定的标志,它的意图是EventActivity并完成自己。否则,它只是意图。

EventActivity我有一个按钮,点击后,调用finish()并返回EventActivity

问题是,当我重新打开我的应用程序时,它将完成MainActivity,当我按下自定义后退按钮时,它将关闭应用程序(因为意图处理已完成)。

如何检查MainActivity未使用finish()

如果我能做到这一点,检查是否完成我可以意图。

谢谢。

+0

你的问题不是很清楚。你是什​​么意思_“在'EventActivity'中,我有一个按钮,当点击它时,调用'finish()'并返回到'EventActivity'。”_你的意思是它调用'finish()'然后去回到'MainActivity'?如果是这样,它如何回到'MainActivity'?它是否调用'startActivity()'返回到'MainActivity'? –

+0

您应该发布一些代码,以使其更清晰。 –

+0

'MainActivity'是'EventActivity'的父亲可以吗?当我启动应用程序(在MainActivity中)时,我可以尝试'EventActivity'并返回,对吧? 如果我在'EventActivity'并强制关闭我的应用程序,当我再次打开它时,它将从'EventActivity'开始,因为当我第一次执行'EventActivity'的意图时,我在会话中保存了一个标志。现在,当我尝试按下“后退按钮”时,我的应用程序关闭(因为我没有任何其他活动在堆栈中)。那有意义吗? –

回答

0

重写的MainActivity在于所述onDestroy方法设定的MainActivity一个publicstaticBoolean字段。在该方法中将publicstatic字段设置为true。在完成之前检查它的值EventActivity,即当您从EventActivity回到MainActivity时。如果它的值为true,则意图从EventActivity开始MainActivity。并将其值设为falseonCreateMainActivity

如下:

在MainActivity.java

public class MainActivity extends Activity { 
    public static boolean isMainActivityDestroyed = false; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     isMainActivityDestroyed = false; 
     . 
     . 
     .//Do something here 
    } 

    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     isMainActivityDestroyed = true; 
     . 
     . 
     .//Do something here 
    } 
} 

在EventActivity.java

public class EventActivity extends Activity { 
     . 
     . 
     .//Some methods 

     //Method which finishes EventActivity & starts MainActivity if destroyed 
     public void buttonOnClick() 
     { 
      if(MainActivity.isMainActivityDestroyed) 
      { 
       Intent i = new Intent(this, MainActivity.class); 
       startActivity(i); 
       finish(); 
      } 
     } 
} 

如果isMainActivityDestroyed变为真那么它就是一个指示MainActivity使用finish()

0

您可以创建自己的Application类延伸Application并从您的应用程序的onCreate启动所需的活动。在清单中,您将删除MainActivity的默认意图过滤器。

+1

这不能工作。如果您没有启动活动(ACTION_MAIN和CATEGORY_DEFAULT),则应用程序将不会显示在已安装的应用程序列表中,用户将无法启动它! –

+0

解决了创建一个静态单例类,该类在启动之前保存最后一个活动。 –