Reputation:
I don't know if this is already answered. Say I call startActivityForResult() from inside a Preference Fragment and then also use onActivityResult() inside this Preference Fragment:
public class MyActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings_activity);
if (savedInstanceState == null) {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.settings, new SettingsFragment())
.commit();
}
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
public static class SettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.my_preferences, rootKey);
...
startActivityForResult(intent, 1);
...
}
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data); //should this line be commented?
if (requestCode == 1)
if (resultCode == RESULT_OK) {
Toast.makeText(getContext(), "peepeepoopoo", Toast.LENGTH_LONG).show();
}
}
}
}
Should super.onActivityResult(requestCode, resultCode, data);
be called in this case?
Upvotes: 1
Views: 95
Reputation: 166
It should be kept as it is without commenting out:
super.onActivityResult(requestCode, resultCode, data);
The code inside the super method is :
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); mPreferenceManager.dispatchActivityResult(requestCode, resultCode, data); }
So, yes, there is a difference.
Upvotes: 1