【问题标题】:preference screen does not show up. Empty screen shows up on launching activity首选项屏幕不显示。启动活动时显示空白屏幕
【发布时间】:2018-04-07 09:54:34
【问题描述】:

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

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

【问题讨论】:

    标签: java android preferencefragment


    【解决方案1】:

    用这个替换你的代码:

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

    【讨论】:

    • 成功了。非常感谢!我没有意识到有两个 onCreate 方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多