安卓首选项 PreferenceFragment相关问题



对Learning Android一书第89页的代码调试发现,PreferenceActivity类已经过时,网上推荐使用PreferenceFragment类。虽然两个类的方法类似,但是在使用过程中发现很多问题,总结如下:

第一次只是简单的将PreferenceActivity改为了PreferenceFragment,其余代码不变。

public class PrefsActivity extends PreferenceFragment {

		public void onCreate(Bundle savedInstanceState) {

			super.onCreate(savedInstanceState);
			addPreferencesFromResource(R.xml.prefs);

		}</span>

结果,程序可以成功在手机终端上运行但是点击菜单按钮后出现“prefs”,再点击它之后程序直接跳出,并没有出现

username

password

这样的界面,在网上找了关于PreferenceFragment相关的资料后将代码PrefsActivity类改为如下:

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

public class PrefsActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		getFragmentManager().beginTransaction()
				.replace(android.R.id.content, new PrefsFragement()).commit();
	}

	public class PrefsFragement extends PreferenceFragment {

		public void onCreate(Bundle savedInstanceState) {

			super.onCreate(savedInstanceState);
			addPreferencesFromResource(R.xml.prefs);

		}
	}
}

程序运行成功,如图所示:

       


此外在编写过程中注意需要将新增加的PrefsActivity类在AndroidManifest.xml文件中进行注册,否则编译无法通过。

添加与注册方式参见Learning Android一书第七章。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值