2015-06-15 149 views
0

所以,我是Android中的一个小菜鸟,但我为此搜索了很多东西,并且我无法找到解决方案:如何检查意图/活动是否已在Android中打开?

在我的导航抽屉中,每行都打开一个新的意图。我如何检查某个意图是否打开/激活,以便我使用该意图而不是创建新意图?

我尝试使用此解决方案:“群众演员”

Link

但我的问题是,抽屉打开同一类每次,但每个类都有不同例如:

public void itemClicked(View view, int position) { 
     Intent intent=null; 
     switch (position) { 
      case 1: 
       intent = new Intent(getActivity(), DisplayActivity.class); 
       intent.putExtra("ARGUMENT","SECTION 1"); 
       break; 
      case 2: 
       intent = new Intent(getActivity(), DisplayActivity.class); 
       intent.putExtra("ARGUMENT","SECTION 2"); 
       break; 
      case 3: 
       intent = new Intent(getActivity(), DisplayActivity.class); 
       intent.putExtra("ARGUMENT","SECTION 3"); 
       break; 
      }   
     startActivity(intent); 
    } 

我该如何检查该类和这些附加项的意图是否已经打开?

谢谢!

+1

您可以使用Application类中的'shared preferences'或extent来存储上次/当前活动的可见。 –

回答

1

您可以使用shared preferences或范围从您存储可见

最后/当前活动Application类,如果你的应用扩展类或者你靶向设备API等级14以上可以实现ActivityLifecycleCallbacks

示例代码

public class MyApplication extends Application implements ActivityLifecycleCallbacks { 
    private static boolean isMySomeActivityVisible; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 

     // Register to be notified of activity state changes 
     registerActivityLifecycleCallbacks(this); 
     .... 
    } 

    @Override 
    public void onActivityResumed(Activity activity) { 
     if (activity instanceof YOURACTIVITY) { 
      isMySomeActivityVisible = true; 
     } 
    } 

    @Override 
    public void onActivityStopped(Activity activity) { 
     if (activity instanceof YOURACTIVITY) { 
      isMySomeActivityVisible = false; 
     } 
    } 

    // Other state change callback stubs 
    .... 
} 
+0

感谢您的回答!我现在要测试它。但是,我有意图的演员怎么样?我可以在这里查看这些吗? – tj56

+0

另外,林不太确定我可以如何使用它。 “DisplayActivity”类的检查在哪里起作用?谢谢! – tj56

+0

当你想要检查显示哪个活动时,你可以创建这个单例并调用实例 –

相关问题