1

このコードを使用してレイアウトをランダム化したい:

public class testing extends Activity 
   {
    /** Called when the activity is first created. */
      private Integer [] mLinearLayoutIds = { 
            R.layout.games0,
            R.layout.games1,
            R.layout.games2,
            R.layout.games3,
            R.layout.games4,
            R.layout.games5,
            }; 
      public void onCreate(Bundle savedInstanceState) 
         {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.main);
           Random random = new java.util.Random();
           int rand = random.nextInt(6);
           setContentView(mLinearLayoutIds[rand]);
         }
  }

ただし、前に表示されたレイアウトが再度表示されるたびに。

以前に表示されたレイアウトを再表示しないようにマークするにはどうすればよいですか?

4

2 に答える 2

2

これには永続的なストレージが必要になります。レイアウトのオプションを保存するには、「SharedPreferences」を参照してください(または、たくさんある場合は、SQLiteの使用を選択できます)。

ユーザーがアクティビティを起動するたびに、配列からランダムにイベントを選択し、使用済みとして保存して、その配列から取り出す必要があります。

この方法で行うには、ユーザーがアプリを初めて開いたときに配列を初期化する必要があります。

(1つの設定でそれを実行し、選択内容を含むJSONArrayからの文字列を格納できます。)

于 2012-10-08T22:43:11.103 に答える
0

「毎回」とは、「バックグラウンドになってから次回アクティビティが表示される」という意味だと思います。このタスクの間違ったメソッドにコードを配置したと思います。から に移動してみてvoid onCreate()くださいvoid onResume()

public class Testing extends Activity {
    private Integer [] mLinearLayoutIds = { 
        R.layout.games0,
        R.layout.games1,
        R.layout.games2,
        R.layout.games3,
        R.layout.games4,
        R.layout.games5,
    };

    public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
    }

    public void onResume() {
        Random random = new java.util.Random();
        int rand = random.nextInt(6);
        setContentView(mLinearLayoutIds[rand]);
    }
}
于 2012-10-09T17:55:16.360 に答える