私のアプリケーションはいくつかのアクティビティで構成されています。デフォルトアクティビティの定義(アプリケーション起動時)プログラムで
アクティビティAはいくつかのアイコンを持つメインメニューです。 アクティビティB、C、D、E、Fのいずれかを押すと、このアクティビティが起動します。
これは大変簡単です。アクティビティAがデフォルトです。
ここでは、ユーザーがお気に入りのアクティビティを開始できるようにするオプションを設定しました。
実際には、たとえば、アクティビティBを直接取得することを希望するユーザーもいます。
活動Aは常に起動し、自動的に閉じますので、私は解決策アクティビティAにこのソリューションをこれを行うことがわかった唯一の方法は非常に醜いです:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
settings = PreferenceManager
.getDefaultSharedPreferences(getBaseContext());
final Intent intent = getIntent();
String action = intent.getAction();
if (Intent.ACTION_MAIN.equals(action)) {
switch (Integer.valueOf(settings.getString("Activitypref", "1"))) {
case 2:
Intent i = new Intent(ActivityA.this, ActivityB.class);
finish();
startActivity(i);
break;
case 3:
i = new Intent(ActivityA.this, ActivityC.class);
finish();
startActivity(i);
break;
case 4:
i = new Intent(ActivityA.this, ActivityD.class);
finish();
startActivity(i);
break;
case 5:
i = new Intent(ActivityA.this, ActivityE.class);
finish();
startActivity(i);
break;
case 6:
i = new Intent(ActivityA.this, ActivityF.class);
finish();
startActivity(i);
break;
default:
break;
}
}
アクティビティAの唯一の目的は、起動する他のアクティビティを決定することですが、これは醜い解決策ではありません。アクティビティAがその仕事をしているようです。 – DeeV
はい、ユーザーはこのアクティビティを「バイパス」してアクティビティXに直接進むことができます。プリファレンスに設定した場合、アクティビティXを楽しんだ後で、自分のホームボタンを押したとき以外はアクティビティAを起動しません。 –
最も厄介なことは、読み込み時間とアクティビティAを開始して画面を点滅させて "onCreate"に閉じることです。 –