2017-08-23 9 views
0

私はナビゲーションドロワーを持っています。ユーザーがナビゲーションドロワーアイテムをクリックすると、ホーム画面に戻ります。DrawerLayoutから現在のアクティビティを確認できません。

ホーム画面が既にアクティブな場合、私はインテントで重複アクティビティを作成したくありません。私は本質的に、活動が既に活発であるかどうかを確認しようとしています。なぜなら、私は資源を非効率的に利用したくないからです。

mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
      switch (i){ 
       case 0: 
        Toast.makeText(getApplicationContext(),"CLICKED 0",Toast.LENGTH_SHORT).show(); 
        Log.v("DRAWER", "THE DRAWER HAS BEEN CLICKED"); 
        if (getCallingActivity() == HomeActivity){ 
         onBackPressed(); 
        } else { 
         Intent I = new Intent(); 
        } 
        break; 
+0

こんにちはtccpg288にコードを変更

その後

// get current activity public static Activity getCurrentActivity() { try { Class activityThreadClass = Class.forName("android.app.ActivityThread"); Object activityThread = activityThreadClass.getMethod("currentActivityThread").invoke( null); Field activitiesField = activityThreadClass.getDeclaredField("mActivities"); activitiesField.setAccessible(true); Map activities = (Map) activitiesField.get(activityThread); for (Object activityRecord : activities.values()) { Class activityRecordClass = activityRecord.getClass(); Field pausedField = activityRecordClass.getDeclaredField("paused"); pausedField.setAccessible(true); if (!pausedField.getBoolean(activityRecord)) { Field activityField = activityRecordClass.getDeclaredField("activity"); activityField.setAccessible(true); Activity activity = (Activity) activityField.get(activityRecord); return activity; } } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } return null; } 

現在のアクティビティを入手!私の答えをチェックすることができます。 – KeLiuyue

答えて

1

これを試してください。

この

if (getCurrentActivity() instanceof HomeActivity) { 
    onBackPressed(); 
} else { 
    Intent I = new Intent(); 
} 
関連する問題