如何保存配置布局android

时间:2012-09-01 16:04:03

标签: android android-layout

我有一个应用程序,其中主要布局是从xml文件加载的。

加载的布局为:

相对布局,带5个按钮。当用户点击按钮时出现一个菜单,他可以在那里选择一种视图。选择视图后,按钮将不可见并显示所选视图。

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

有可能吗?

1 个答案:

答案 0 :(得分:2)

您应该可以使用Android中的“共享首选项”http://developer.android.com/guide/topics/data/data-storage.html#pref

来执行此操作

您可以存储一个布尔值来跟踪布局的状态(无论是具有5个按钮的RelativeLayout,还是具有4个按钮的View选择状态)。这样,在加载活动时,您可以先检查此标志以确定要加载的布局。您也可以使用首选项,这样您就不需要初始化此标志变量,而是可以使用默认值。

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;
       }
    }

在OnClickListener中输入按钮A:

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()方法可以类似地实现。

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