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