私はAndroid2.xで正常に動作するAndroidアプリを持っていますが、IceCreamSandwhichでは失敗します。
アプリには、「セットアップ」ボタンがクリックされたときにonStartActivityForResult()でSetupActivityBを開始するMainactivityAがあります。
SetupActivityを介して、ユーザーはアプリ設定を設定するための他のアクティビティ(ネットワーク接続設定、ユーザーインターフェイス設定など)を開始できます。SetupActivityは、それらの一部をonStartActivityForResult()で開始し、変更された設定に関するデータを、setResult(RESULT_OK、intent);で返されるIntentに入れます。
SetupActivityが別のアクティビティC(つまり、接続設定)を開始し、Cが戻ったとき、MainActivity Aは無意味な量(つまり50)回作成されます(またはそのonCreate()が何度も呼び出されます)。これの理由は何であり、これを解決するにはどうすればよいですか?この問題は、IceCreamSandwhichでのみ発生します。
コード:
主な活動:
//OnClick listeners for all the buttons and text field in the UI
public void onClick(View view) {
//start SetupActivity
if (view == (setup_button)){
Intent intent = new Intent(getApplicationContext(), SetupActivity.class);
startActivityForResult(intent, SETUP_ACTIVITY);
}
...
}
public void onActivityResult(int requestCode, int resultCode, Intent data)
switch(requestCode) {
case SETUP_ACTIVITY: //returned from SetupActivity
//check what settings have changed and update variables accordingly
...
}
}
SetupActivity:
//click handler for "Measurement setup" button
public void measSetupClicked(View v) {
Intent intent = new Intent(this, MeasurementSetupActivity.class);
startActivityForResult(intent, MEAS_SETUP);
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Intent intent = new Intent();
//try-catch omited for brevity
if(data.hasExtra("MEAS_SETTINGS_CHANGED")) {
intent.putExtra("MEAS_SETUP_CHANGED"),data.getExtras().getBoolean("MEAS_SETTINGS_CHANGED"));
}
setResult(RESULT_OK,intent);
}
@Override
public void onBackPressed() {
SetupActivity.this.finish();
}
public void backButtonPressed(View v) {
SetupActivity.this.finish();
}