#android #settings
#Android #Настройки
Вопрос:
Я создал действие настройки. Когда пользователь нажимает кнопку «Настройка», он переходит с mainactivity на settingsactivity, но он не переходит на предыдущую страницу, когда я нажимаю кнопку «Назад» в верхней части панели действий, в ней говорится, что приложение продолжает останавливаться. Если я нажму кнопку возврата телефона, это сработает.
Здесь я прикрепил свою кодировку, исправив ее. Как я могу это сделать?
@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);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
NavUtils.navigateUpFromSameTask(this);
}
return super.onOptionsItemSelected(item);
}
public static class SettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey)
{
setPreferencesFromResource(R.xml.root_preferences, rootKey);
}
}
Ответ №1:
Его предпочтительнее использовать finish()
в activity, поскольку он автоматически вернется к последнему activity.
Ответ №2:
сначала добавьте в tollbar в файле XML
<androidx.appcompat.widget.Toolbar
android:id="@ id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary" >
<ImageView
android:id="@ id/home"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_back"/>
</androidx.appcompat.widget.Toolbar>
и
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent intent = new Intent(this, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}