2

私は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();
}
4

0 に答える 0