Android无法弄清楚为什么perference屏幕不会显示首选项文本框

时间:2014-03-12 22:54:30

标签: android android-preferences

我试图显示偏好设置屏幕并显示文本框并且没有显示但是在另一个屏幕中它没有问题?它显示负1或null。

StatsActivity

public class StatsActivity extends Activity {
        static final String TAG = "StatsActivity";

        @Override
        protected void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);
            setContentView(R.layout.stats_settings_layout);

            SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);

            StringBuilder builder = new StringBuilder();

            builder.append("\n" + sharedPrefs.getString("time_usage_key", "-1"));


            TextView settingsTextViewStats = (TextView) findViewById(R.id.stats_settings_text_view);
            settingsTextViewStats.setText(builder.toString());


        }

    }

StatsPrefsActivity

public class StatsPrefsActivity extends PreferenceActivity implements
OnSharedPreferenceChangeListener{

    static final String TAG = "StatsPrefsActivity";

    @Override
    public void onCreate(Bundle savedInstanceState) {       
        super.onCreate(savedInstanceState);        
        addPreferencesFromResource(R.xml.preferences_stats); 

        PreferenceManager.setDefaultValues(this,R.xml.preferences_stats, false);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //menu.add(Menu.NONE, 0, 0, "Show current settings");
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case 0:
                startActivity(new Intent(this, StatsActivity.class));
                return true;
        }
        return false;
    }
    @Override
    public void onStart(){
        super.onStart();
        SharedPreferences prefs=PreferenceManager.getDefaultSharedPreferences(StatsPrefsActivity.this);
    }

    @Override
    protected void onResume() {
        super.onResume();
        // Set up a listener whenever a key changes
        getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
    }

    @Override
    protected void onPause() {
        super.onPause();
        // Unregister the listener whenever a key changes
        getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
    }

    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {

        SharedPreferences s = getSharedPreferences("MY_PREFS", 0);

        // Create a editor to edit the preferences:
        SharedPreferences.Editor editor = s.edit();

       }

}

preference_stats.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">


    <PreferenceCategory 
        android:title="Settings"
        android:key="first_category">


        <EditTextPreference
        android:id="@+id/text_pref_box"
        android:key="time_usage_key"
        android:title="7 Day Usage"
        android:summary="A total of usage of 7 days." />

    </PreferenceCategory>

</PreferenceScreen>

1 个答案:

答案 0 :(得分:0)

如果你想要一个初始值,那么设置一个。现在你将“-1”设置为默认值。因此,如果在您将“-1”作为默认值之前从未使用过首选项。如果您想要更好的演示文稿,请尝试将其更改为空白字符串“”或其他内容。