Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 以编程方式关闭首选项标头_Android - Fatal编程技术网

Android 以编程方式关闭首选项标头

Android 以编程方式关闭首选项标头,android,Android,在我的应用程序中,我正在显示 我从XML资源中扩展并添加标题,如下所示: @Override public void onBuildHeaders(List<Header> target) { loadHeadersFromResource(R.xml.preference_headers, target); } @覆盖 public void onBuildHeaders(列表目标){ loadHeadersFromResource(R.xml.preference_头,

在我的应用程序中,我正在显示

我从XML资源中扩展并添加标题,如下所示:

@Override
public void onBuildHeaders(List<Header> target) {
    loadHeadersFromResource(R.xml.preference_headers, target);
}
@覆盖
public void onBuildHeaders(列表目标){
loadHeadersFromResource(R.xml.preference_头,目标);
}
其中一个标题是:

<header
    android:fragment="com.example.FragmentSettings"
    android:summary="Tap to configure"
    android:title="General Settings" />

它将启动扩展的主首选项片段

特定设置允许用户擦除应用程序可以访问的所有数据,并取消对其帐户的授权

如果用户选择此选项,我将擦除所有内容、缓存、共享首选项等,然后我希望将它们返回到初始授权屏幕

问题是,即使所有活动都调用
finish(),首选项标题屏幕仍然存在即使我调用
系统退出(0)

我怎么才能把这该死的东西关起来

救命啊

请尝试以下操作:

protected void onListItemClick (ListView l, View v, int position, long id)
{
    super.onListItemClick(l, v, position, id);
    finish();
}

考虑到您给出的少量细节,我将尝试提供一个答案,假设您希望在打开授权屏幕时清除活动后台

  • MyPreferenceActivity-仅以“onBuildHeaders”为例(此外,单击按钮时会打开该活动)
  • 首选项标题-仅“碎片设置”
碎片设置:

public class FragmentSettings extends PreferenceFragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preference_settings);

        Preference myPref = (Preference) findPreference("pref_clearAllData");
        myPref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
                public boolean onPreferenceClick(Preference preference) {
                    Intent intent = new Intent(FragmentSettings.this.getActivity(), AuthActivity.class);
                    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
                    startActivity(intent);

                    return true;
                }
            });
    }
}
首选项设置(我假设您没有使用复选框,但它可以作为一个示例):



虽然这可能有效,但稍作解释将有助于理解原因。请解释此代码的工作原理。这避免了在不理解的情况下复制和粘贴。请您解释一下这将达到什么效果?这个问题没有得到足够的重视——可能是因为这是一个非常具体的案例,您应该添加最少的工作代码来演示您的案例。
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory android:title="General Settings" >
    <CheckBoxPreference
        android:key="pref_clearAllData"
        android:title="Clear all data"
        android:summary="Clears all data and shows the authorisation screen"
        android:defaultValue="false" />
</PreferenceCategory>