Reputation: 3218
In my MainActivity
I have defined:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// int id = item.getItemId();
switch (item.getItemId()) {
case R.id.menu_settings:
Toast.makeText(getApplicationContext(), "Settings menu clicked", Toast.LENGTH_LONG).show();
Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
return true;
case R.id.menu_location:
startLocationUpdates();
setupViewPager();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
The Settings Activity
is the default New->Activity->Settings
created by Android studio as:
public class SettingsActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings_activity);
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.root_preferences, rootKey);
}
}
}
Now, the problem is the back button is actually not doing anything, i.e. clicking the back button on SettingsActivity is not taking me to the MainActivity.
What should I do?
Upvotes: 0
Views: 61
Reputation: 3296
Try setting parent activity in AndroidManifest.xml:
<activity
android:name=".SettingsActivity"
android:parentActivityName=".MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity"/>
</activity>
Upvotes: 1
Reputation: 1986
try implementing on Settings Activity
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() ==android.R.id.home) {
finish();
}
return super.onOptionsItemSelected(item);
}
@Override
public void onBackPressed() {
super.onBackPressed();
}
Upvotes: 0