2

メイン レイアウトが xml ファイルから読み込まれるアプリケーションがあります。

読み込まれたレイアウトは次のとおりです。

5ボタンの相対レイアウト。ユーザーがボタンをクリックすると、ビューのタイプを選択できるメニューが表示されます。ビューを選択すると、ボタンが非表示になり、選択したビューが表示されます。

アプリケーションを再起動した後、システムはデフォルト レイアウトをロードします (5 ボタンによる相対レイアウト)。アプリケーションがシステムを再起動したときに、最後に選択したレイアウトをロードする必要があります。

することは可能ですか?

4

1 に答える 1

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

そして、ボタン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 に答える