首选项屏幕不显示。空屏幕显示启动活动

时间:2018-04-07 09:54:34

标签: java android preferencefragment

我创建了两个活动。一个用于保存首选项片段,另一个用于保持按钮点击按钮,它应显示首选项片段。 没有出现错误但是当我点击按钮时会弹出一个空白屏幕而不是我创建的设置布局。 我已尝试过这个网站上的所有内容,但没有任何作用。 我在这里包含了代码,非常感谢您的帮助。 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));
        }
    });
}

}

这是第二个活动的代码 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);
    }
  }
}

我在Manifest文件中包含了第二个活动。 但是当我点击按钮时,会出现一个空白屏幕。

1 个答案:

答案 0 :(得分:0)

用以下代码替换您的代码:

 @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);
    }
  }
}