Каков рекомендуемый способ закрыть экран настроек?

Android новичок здесь...

Я работаю с различными примерами, настраиваю экран настроек. Но часть, которую я не понимаю, это то, как пользователь должен выйти из экрана

public static class PrefsFragment extends PreferenceFragment {
     ...
}

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@android:color/white">


<PreferenceCategory android:title="@string/dialog_based_preferences">

    <EditTextPreference
        android:dialogTitle="@string/dialog_title_edittext_preference"
        android:key="edittext_preference"
        android:summary="@string/summary_edittext_preference"
        android:title="@string/title_edittext_preference" />

    <ListPreference
        android:dialogTitle="@string/dialog_title_list_preference"
        android:entries="@array/entries_list_preference"
        android:entryValues="@array/entryvalues_list_preference"
        android:key="list_preference"
        android:summary="@string/summary_list_preference"
        android:title="@string/title_list_preference" />

 </PreferenceCategory>

Но руководство, которое я не могу найти, состоит в том, как пользователь должен ЗАКРЫТЬ экран настроек? Каково "официальное руководство" по этому вопросу?

Один пример, с которым я столкнулся, - это кнопка на экране настроек для выхода. Но создается впечатление, что это нестандартный подход (если есть такая вещь).

Это действительно лучший способ закрыть экран?

 <Preference
    android:key="@string/SavePref"
    android:title="SAVE AND EXIT"
    android:summary="Click > 
    android:widgetLayout="@layout/pref_reset_bd_button">
 </Preference>

Или это должно быть решено на панели инструментов приложения с помощью стрелки <-. Я конечно видел оба типа в различных приложениях, которые я сам использую.

Просто интересно, что такое "совет", если таковой имеется. Приветствия.

2 ответа

Ожидается, что пользователь закроет его, нажав кнопку "назад" или предоставив навигацию вверх (стрелка в левом верхнем углу экрана).

Кнопка назад

Вот как определить кнопку "Назад":

@Override
public void onBackPressed() {
if (SOMETHING) {
    DO SOMETHING ELSE
    return;
}

// Otherwise defer to system default behavior.
super.onBackPressed();
}

Поведение по умолчанию состоит в том, чтобы вернуться к верхней активности стека после того, как этот извлечен.

Обеспечение навигации

Вы также можете установить родительскую активность предпочтения следующим образом:

<application ... >
...
<!-- The main/home activity (it has no parent activity) -->
<activity
    android:name="com.example.myfirstapp.MainActivity" ...>
    ...
</activity>

<!-- A child of the main activity -->
<activity
    android:name="com.example.myfirstapp.DisplayMessageActivity"
    android:label="@string/title_activity_display_message"
    android:parentActivityName="com.example.myfirstapp.MainActivity" >

    <!-- Parent activity meta-data to support 4.0 and lower -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.myfirstapp.MainActivity" />
</activity>
</application>

Таким образом, панель действий позволит пользователю вернуться к деятельности, которую вы хотите.

Как насчет того, чтобы попробовать что-то подобное (так как вы сказали, что у вас есть активность и фрагмент)

в вашем xml:

<Preference
android:id="@+id/mPreferenceId"
android:key="@string/SavePref"
android:title="SAVE AND EXIT"
android:summary="Click > 
android:widgetLayout="@layout/pref_reset_bd_button">
</Preference>

В вашей деятельности получите представление по id и добавьте что-то вроде этого:

@Override
public void onBackPressed() {
    if(mPreference.getVisibility() != View.GONE){
        ((ViewGroup)mPreference.getParent()).removeView(mPreference);
        return;
    }
    super.onBackPressed();
}

Если у вас нет дальнейших ссылок, он должен автоматически уничтожить вид.

Если под полноэкранным режимом вы имеете в виду, что у вас нет нижних кнопок, то добавьте прослушиватель обратного вызова и реализуйте там оператор if.

Другие вопросы по тегам