5

1つのメインアクティビティと1つのpreferenceActivityがあります。最初のアクティビティでは、menuを呼び出し、startActivityForResultを呼び出してpreferenceActivityに進みます。

                case R.id.settings:
                startActivityForResult(new Intent(this, SettingsActivity.class), LAUNCH_SETTINGS);
                return true;

次に、設定を変更して、メインアクティビティに戻り、新しい設定が適用されたメインアクティビティを確認したいと思います。onPause()メソッドで次のようにします(私が正しく理解しているように、このメソッドは戻るボタンを押すと呼び出されますよね?)

   @Override
     protected void onPause() {
         super.onPause();
         setResult(RESULT_OK, new Intent(this, MainActivity.class));
         finish();
     }

主な活動について

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == LAUNCH_SETTINGS) {
            if (resultCode == RESULT_OK) {
                new RefreshList().execute(ACTION_SELECT);
                Log.d(TAG, "On activity result");
            }
        }
    }

しかし、私のacyncTaskは呼び出されず、ログは出力されません。これをどれだけ正しく行うことができますか?ありがとう!

4

1 に答える 1

12

私の最初のアクティビティでは、menu を呼び出し、startActivityForResult を呼び出して、preferenceActivity に進みます。

aを使用startActivityForResult()するのPreferenceActivityはかなり珍しいことです。PreferenceActivityで使用するように設計されていstartActivity()ます。開始したものPreferenceActivityが設定変更を気にする場合は、設定変更リスナーをSharedPreferencesオブジェクトに登録する必要があります。

次に、設定を変更し、メイン アクティビティに戻り、新しい設定が適用されたメイン アクティビティを確認したいと考えています。

代わりにa を使用することをお勧めしますSharedPreferences.OnSharedPreferenceChangeListeneronStart()または、元のアクティビティまたはonResume()メソッドで関心のある設定を読み直すだけです。

onPause() メソッドで次のことを行います (戻るボタンを押すと、このメソッドが呼び出されることを理解していますよね?)

いいえ、それはうまくいきません。onPause()に電話するには遅すぎますsetResult()

于 2010-10-14T20:43:36.890 に答える