关闭

安卓首选项 PreferenceFragment相关问题

150人阅读 评论(0) 收藏 举报


对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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4242次
    • 积分:105
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:4篇
    • 译文:0篇
    • 评论:2条