メニューのアクティビティとコンテンツのアクティビティのレイアウトや動作が大きく異なる場合を除き、「ほんの数少ないアクティビティアプローチ」とします。
バックボタンが壊れないため、Androidはバックログを追跡します。
本当に89の異なるレイアウトが必要ですか?大部分が内容が異なる場合は、コンテンツをデータベースまたはファイルまたは/res/
に格納し、実行時にレイアウトを再利用し、レイアウトのコンテンツ領域を埋めます。
更新:
それはのonCreate()が適切なコンテンツとレイアウトに記入していることをコンテンツページあたり1活性を有することが最も簡単ではないでしょうか?
あなたのonCreate()
コードがどのように異なるかによって異なります。 onCreate()
が巨大なswitch
の62個の奇妙な数字のcase
の句になる場合、巨大なものではなく別々の小さなアクティビティを使う方がよいでしょう。 onCreate()
コードを一般化することができ、それを例えば100行と10個の分岐ステートメントの下に保つことができれば、その方法になります。
例をあげると、私は試験問題のコレクションを持っている単純なアプリケーションを作成していて、ランダムにユーザーに提示していました。それぞれの質問には、質問文、イラスト、2-4回答の選択肢があります。約500の質問がありました。次に、データベースから質問を読み込んでレイアウトを更新するコードを示します。応答の数が可変であり、イラストを持たない質問の可能性があることに注意してください。
public void loadQuestion(int id) {
// Columns in questions table:
// CREATE TABLE questions (
// id integer,
// q text,
// a1 text,
// a2 text,
// a3 text,
// a4 text,
// a5 text,
// correct integer,
// img blob
// );
Cursor c = mDatabase.rawQuery("SELECT * FROM questions where id=" + id, null);
c.moveToFirst();
TextView text = (TextView) findViewById(R.id.text);
text.setText(c.getString(1));
RadioGroup g = (RadioGroup) findViewById(R.id.answers);
g.clearCheck();
// Load answers!
int correct = c.getInt(7);
int[] buttons = new int[] {R.id.a1, R.id.a2, R.id.a3, R.id.a4, R.id.a5};
for (int i=0; i < 5; i++) {
String answerText = c.getString(i + 2);
RadioButton rb = (RadioButton) findViewById(buttons[i]);
if (answerText != null && answerText.length() > 0) {
rb.setText(answerText);
rb.setTag(i + 1 == correct ? "correct" : null);
rb.setVisibility(RadioButton.VISIBLE);
} else {
rb.setVisibility(RadioButton.GONE);
}
}
byte[] encoded = c.getBlob(8);
ImageView iv = (ImageView) findViewById(R.id.image);
if (encoded != null && encoded.length > 0) {
iv.setVisibility(ImageView.VISIBLE);
iv.setImageBitmap(bytesToBitmap(encoded));
} else {
iv.setVisibility(ImageView.GONE);
}
}
あなたは何を意味するか:戻るボタンは中断されません、Androidはあなたのバックログを追跡しますか? 活動への活動からのユーザ移動すると
、アプリケーション間で、 Androidシステムは ユーザーが訪問した活動の線形 ナビゲーション履歴を保持します。これはバックスタックとも呼ばれるアクティビティ スタックです。 一般に、ユーザが新しい アクティビティを開始すると、アクティビティ スタックに追加されるため、BACKを押すと、スタック上の前のアクティビティが と表示されます。 (Activity and Task Design Guidelinesから)
あなたのアプリは何をしますか?それはコンテンツスクリーンのロットです。 – Matt
これはツアーガイドアプリケーションなので、ホテル、レストラン、アトラクションなどのコンテンツページを持っています。 – Stu