首选项屏幕不显示。启动时出现空白屏幕 activity

preference screen does not show up. Empty screen shows up on launching activity

我创建了两个活动。一个用于保存偏好片段,一个用于保存按钮。单击按钮时,它应该显示首选项片段。 没有显示错误,但是当我单击按钮时,会弹出一个空屏幕,而不是我创建的设置布局。 我已经尝试了该网站上的所有内容,但没有任何效果。 我在这里包含了代码,非常感谢您的帮助。 MainActivity.java

    package com.example.vavi.settings;

import android.content.Intent;
import android.preference.PreferenceFragment;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btn=(Button)findViewById(R.id.btn);

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            startActivity(new 
Intent(getApplicationContext(),defaultPref.class));
        }
    });
}

}

这是第二个的代码activity defaultPref.java

    package com.example.vavi.settings;

import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceFragment;
import android.support.annotation.Nullable;

/**
 * Created by VAVI on 4/4/2018.
 */

public class defaultPref extends PreferenceActivity {
    @Override
public void onCreate(@Nullable Bundle savedInstanceState, @Nullable 
PersistableBundle persistentState) {
    super.onCreate(savedInstanceState, persistentState);
    setContentView(R.layout.default_pref);

    getFragmentManager().beginTransaction().replace(R.id.rep, new 
PrefFrag()).commit();
}

public static class PrefFrag extends PreferenceFragment{
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preference);
    }
  }
}

我已将第二个 activity 包含在清单文件中。 但是当我点击按钮时,会出现一个空白屏幕。

将您的代码替换为:

 @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.default_pref);

    getFragmentManager().beginTransaction().replace(R.id.rep, new 
    PrefFrag()).commit();
    }

删除此方法:

@Override
public void onCreate(@Nullable Bundle savedInstanceState, @Nullable 
PersistableBundle persistentState) {
    super.onCreate(savedInstanceState, persistentState);
    setContentView(R.layout.default_pref);

    getFragmentManager().beginTransaction().replace(R.id.rep, new 
PrefFrag()).commit();
}

您的最终代码:

public class defaultPref extends PreferenceActivity {
    @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.default_pref);

        getFragmentManager().beginTransaction().replace(R.id.rep, new 
        PrefFrag()).commit();
        }

public static class PrefFrag extends PreferenceFragment{
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preference);
    }
  }
}