Android Activity加载SettingsFragment

本文介绍了如何在Android应用中使用Activity加载SettingsFragment,通过Preference.xml布局来构建设置界面,实现应用的个性化设置功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Activity加载SettingsFragment 设置

Preference.xml布局:

<?xml version="1.0" encoding="UTF-8"?>

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
    
    <PreferenceCategory android:title="第一组">
        <ListPreference 
            android:icon="@drawable/zjl"
            android:dialogTitle="list dialog Title"
            android:entries="@array/citys"
            android:entryValues="@array/citys_code"
            android:key="list_key"
            android:summary="list 的内容"
            android:title="选择  title"
            /> 
    </PreferenceCategory>
    
    <PreferenceCategory android:title="第二组">
        <EditTextPreference 
            android:icon="@drawable/ic_launcher"
            android:defaultValue="缺省值1"
            android:key="edit_text_key_1"
            android:summary="edit summary"
            android:title="写什么  text 1"
            />
        <CheckBoxPreference 
            android:icon="@drawable/ic_launcher"
            android:defaultValue="true"
            android:key="checkbox_key"
            android:summary="checkbox summary"
            android:title="勾选  title"
            />
    </PreferenceCategory>
    
    <!-- 点击将浏览和打开网页 -->
    <Preference 
       android:icon="@drawable/csdn"
       android:summary="http://blog.youkuaiyun.com/Rokends"
       android:title="网页浏览">
      <intent  
            android:action="android.intent.action.VIEW"  
            android:data="http://blog.youkuaiyun.com/Rokends" 
            />  
     
     </Preference>
     
     <SwitchPreference
         android:icon="@drawable/wifi"
        android:key="open_key"
        android:summary="Chaniese_520"
        android:title="WiFi" />
    
    <!-- 此处将跳转到下一屏设置 -->
    <PreferenceScreen 
        android:icon="@drawable/ic_launcher"
        android:key="preference_screen_key_2"
        android:persistent="false"
        android:title="跳转到下页 "
        >
        <EditTextPreference 
            android:icon="@drawable/ic_launcher"
            android:defaultValue="缺省值2"  
            android:key="edit_text_key_2"  
            android:summary="edit summary"  
            android:title="写什么  text 2" 
            />
        
    </PreferenceScreen>
    
</PreferenceScreen>

arrys.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="citys">  
        <item>成都</item>  
        <item>北京</item>  
        <item>上海</item>  
    </string-array>
    
    <string-array name="citys_code">
        <item>028</item>  
        <item>010</item>  
        <item>021</item>  
    </string-array>
</resources>

ManiActivity :

package com.example.settings;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit();
	}
}

SettingsFragment extends PreferenceFragment:

package com.example.settings;

import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle;
import android.preference.EditTextPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;
import android.util.Log;
import android.widget.Toast;

public class SettingsFragment extends PreferenceFragment{
	
	private OnSharedPreferenceChangeListener mOnSharedPreferenceChangeListener = new OnSharedPreferenceChangeListener() {

		@Override
		public void onSharedPreferenceChanged(
				SharedPreferences sharedPreferences, String key) {

			if(key.equals(A_KEY)){
				String s=sharedPreferences.getString(A_KEY, "NULL");
				mEditTextPreference.setSummary(s);
			}	
			
			if(key.equals("list_key")){
				String e=mListPreference.getEntry()+"";
				String v=mListPreference.getValue();
				mListPreference.setSummary(e+" - "+v);
			}
			
			Toast.makeText(getActivity(), key, Toast.LENGTH_SHORT).show();
		}
	};

	private EditTextPreference mEditTextPreference;
	private final String A_KEY = "edit_text_key_1";
	
	private	ListPreference mListPreference;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		// 通用的读取设置的某个值的方法
		SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
		String s = sharedPreferences.getString("edit_text_key_1", "暂时为空");
		Log.d("edit_text_key_1", s);

		addPreferencesFromResource(R.xml.preferences);

		sharedPreferences
				.registerOnSharedPreferenceChangeListener(mOnSharedPreferenceChangeListener);
	
	
		mEditTextPreference = (EditTextPreference) findPreference(A_KEY);
		
		mListPreference=(ListPreference) findPreference("list_key");
	}
	
	@Override
	public void onResume() {  
        super.onResume();  
        getPreferenceScreen().getSharedPreferences()  
                .registerOnSharedPreferenceChangeListener(mOnSharedPreferenceChangeListener);  
    }  
  
    @Override
	public void onPause() {  
        super.onPause();  
        getPreferenceScreen().getSharedPreferences()  
                .unregisterOnSharedPreferenceChangeListener(mOnSharedPreferenceChangeListener);  
    }  
	
    
	// 那一个设置选项栏被触发  
    @Override  
    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {  
    	Toast.makeText(getActivity(), preference.getTitle()+" -> "+preference.getKey(), Toast.LENGTH_LONG).show();
    	
    	return false;  
    }  
	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值