2013-04-25 69 views
0

在我的主要活动如何在当前活动开始添加以下intent-filter当用户按下Home键

<intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.HOME" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 

所以,当我按下home键我的主要业务是显示。但我希望看到最后看到的活动,而不是主要活动。如何实现?

+1

的一种方式可能是,在每个活动的onCreate,在偏好设置字符串的实际活动的名称。 因此,在您的主要活动中,只需检查此字符串并开始正确的活动。 可以做的伎俩,可能有其他方式来做到这一点。 – 2013-04-25 12:20:08

回答

2

通过onPause存储SharedPreference中的每个Activity,然后您可以纠正它。

@Override 
protected void onPause() { 
    super.onPause(); 

    SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE); 
    Editor editor = prefs.edit(); 
    editor.putString("lastActivity", getClass().getName()); 
    editor.commit(); 
} 

在您的MainActivity:

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     Class<?> activityClass; 

     try { 
      SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE); 
      activityClass = Class.forName(
       prefs.getString("lastActivity", Activity1.class.getName())); 
     } catch(ClassNotFoundException ex) { 
      activityClass = Activity1.class; 
     } 

     startActivity(new Intent(this, activityClass)); 
    } 
} 
+0

“Activity1”应该是我主要活动的名称还是什么? – 2013-04-25 12:30:41

+0

是您的MainActivity – 2013-04-25 12:31:37

+0

这是解决您的问题的逻辑思想,它可能会导致像重新启动MainActivity一样的问题。如果你面对这样的问题,那就用旗帜吧。希望它能正常工作。 – 2013-04-25 12:34:50

相关问题