我有一个应用程序,其中主要布局是从xml文件加载的。
加载的布局为:
相对布局,带5个按钮。当用户点击按钮时出现一个菜单,他可以在那里选择一种视图。选择视图后,按钮将不可见并显示所选视图。
重新启动应用程序后,系统加载默认布局(相对布局为5按钮)。 我想在应用程序重新启动系统时加载最后选择的布局。
有可能吗?
答案 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()方法可以类似地实现。
编辑:已更新为使用整数而不是布尔值