2

我有一个从 xml 文件加载主布局的应用程序。

加载的布局是:

带有 5 个按钮的相对布局。当用户单击按钮时,会出现一个菜单,他可以在其中选择一种视图类型。选择视图后,按钮将不可见并出现选择视图。

重新启动应用程序后,系统会加载默认布局(带有 5 个按钮的相对布局)。我希望在应用程序重新启动系统时加载最后选择的布局。

有可能吗?

4

1 回答 1

2

您应该可以通过在 Android 中使用 Shared Preferences 来做到这一点:http: //developer.android.com/guide/topics/data/data-storage.html#pref

您可以存储一个布尔值来跟踪布局的状态(无论是具有 5 个按钮的相对布局,还是具有 4 个按钮的视图选择状态)。这样当你加载activity时,你可以先检查这个标志来决定你要加载哪个布局。您还可以使用首选项,这样您就不需要初始化此标志变量,而是可以使用默认值。

public class MyActivity extends Activity {
    public static final String PREFS_NAME = "MyPrefsFile";
    public enum ViewState {
        NO_CLICK, VIEW_A, VIEW_B, ...
    };

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

       // Restore preferences
       SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
       int currentView = settings.getInt("viewClicked", NO_CLICK);

       switch(currentView)
       {
           case VIEW_A: // Load the view if button A was clicked
               loadViewA();
               break;
           case VIEW_B: // Load the view if button B was clicked
               loadViewB();
               break;
           ...
           case NO_CLICK: // Load the RelativeLayout with 5 Buttons
           default:
               loadDefaultView();
               break;
       }
    }

在按钮 A 的 OnClickListener 中:

public void onClick(View v) {

  ...

  // Get the settings
  SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
  SharedPreferences.Editor editor = settings.edit();
  editor.putInt("viewClicked", VIEW_A);

  // Commit the edits!
  editor.commit();

  // Load the view
  loadViewA();
}

其他按钮的其他 onClick() 方法可以类似地实现。

编辑:更新为使用整数而不是布尔值

于 2012-09-01T16:20:26.050 回答