列表视图单击一个活动,然后保存活动

时间:2017-05-28 05:35:06

标签: android listview

活动中有许多按钮。单击每个按钮时,将打开不同的活动。如果我们关闭应用并再次重新打开它,我们必须获得最后一次打开的活动。

1 个答案:

答案 0 :(得分:0)

要实现您所描述的内容,您只需将最后一个可见活动存储在 SharedPreferences 中,然后根据首选项启动上一个活动的调度程序活动。

在您想要自动重新启动的每项活动中:

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

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

Dispatcher活动类似于以下内容:

 public class Dispatcher extends Activity {

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

        Class<?> activityClass;

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

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

你也可以在你的清单中尝试这个(也可以检查一下),

<activity
 android:name=".MainActivity"
 android:alwaysRetainTaskState="true"
 android:exported="true"
 .
 .
 .

注意:Dispatcher活动显然需要是android.intent.action.MAIN操作

如果上述方法无效,请尝试以下方法:

       @Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) { 
        // Activity was brought to front and not created, 
        // Thus finishing this will get us to the last viewed activity 
        finish(); 
        return; 
    } 

    // Regular activity creation code... 
}