关闭“首选项”屏幕的推荐方法是什么?

时间:2017-10-21 10:14:34

标签: android android-fragments preference

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>

或者应该在应用工具栏中使用&lt; - 箭头处理它。我当然在我自己使用的各种应用程序中看到了这两种类型。

只是想知道“建议”是什么,如果有的话。 干杯。

2 个答案:

答案 0 :(得分:0)

用户需要通过按后退按钮或提供导航(屏幕左上角的箭头)来关闭它。

后退按钮

以下是定义后退按钮的方法:

@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>

因此,操作栏将允许用户返回您想要的活动。

答案 1 :(得分:0)

尝试这样的事情怎么样(因为你说你有活动和片段)

你的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语句。