onBackPressed() 无法使 MainActivity 重新加载

onBackPressed() can't make MainActivity to reload

在我的 SettingsActivity 中执行某些操作后,我正在尝试重新加载我的 MainActivity。 SettingsActivity 中的“我的向上”按钮效果很好,并在从 SettingsActivity 返回时重新加载 MainActivity。但是当在 SettingsActivity 中按下时,后退按钮会保存数据但不会重新加载 MainActivity。基本上我的 getSupportLoaderManager().restartLoader() 不适用于 onBackPressed() 你知道吗,我该如何解决它?

我的 MainActivity 是这样的:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()){
        case R.id.action_settings:
            Intent intent = new Intent(this, SettingsActivity.class);
            startActivityForResult(intent, SETTINGS_REQUEST_CODE);
            break;
    }
    return super.onOptionsItemSelected(item);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(requestCode == SETTINGS_REQUEST_CODE && resultCode == RESULT_OK){
        getSupportLoaderManager().restartLoader(0, null, this);
    }
}

我的 SettingsActivity 类似于:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if(item.getItemId() == android.R.id.home){  //WORKS GREAT
        finishSetting();
    }
    return super.onOptionsItemSelected(item);
}

@Override
public void onBackPressed() {   //SAVES DATA BUT DOESN'T RELOAD MAINACTIVITY
    finishSetting();
    //startActivity(new Intent(this, MainActivity.class));
}

private void finishSetting(){
    if(newLanguageSelection==null || newLanguageSelection.equals(getLanguagePreference())){
        setResult(RESULT_CANCELED);
    }
    else {
        setLanguagePreference(newLanguageSelection);
        setResult(RESULT_OK);
    }
    finish();
}

From the documentation:

编辑:

当您启动第二个 activity 时,您的 Main 暂停,当按下后退按钮时,它会恢复...

在您的 SettingsActivity 上设置一个标志(例如使用 SharedPreferences

SettingsActivity.onBackPressed(){
   finishSetting();
   SharedPreferences prefs= getSharedPreferences("prefs", MODE_PRIVATE);
   prefs.edit().puBoolean("isShouldReload", true).apply();
}

然后,在 MainActivity.onResume

onResume(){
   SharedPreferences prefs= getSharedPreferences("prefs", MODE_PRIVATE);
   if(prefs.getBoolean("isShouldReload", false)){
      // Do your reload.
   }
}

你应该覆盖你的 onResume() 来检查主 activity 是否被刷新,所以每当你从设置 activity 回到主 activity .. 它会得到更新..

在public void onBackPressed()方法中只写:

getActionBar().setDisplayHomeAsUpEnabled(true);