督促学习——ViewPager实现滑动的Preference页面且带ActionBar

ViewPager实现滑动的Preference页面且带ActionBar 立即下载

直接上代码有时间具体分析:

1、MainActivity.java

public class MainActivity extends FragmentActivity implements
		OnPageChangeListener {

	private int mActionBarOptions;
	private ViewPager mViewPager;

	private View mCustomView;
	private ImageView mScroll1;
	private ImageView mScroll2;
	private ImageView mScroll3;
	private ImageView mScroll4;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.custom_tab_on_top_content);

		mViewPager = (ViewPager) findViewById(R.id.pager);
		// mViewPager
		// .setAdapter(new ViewPagerAdapter(getSupportFragmentManager()));
		mViewPager.setAdapter(new PagerAdapter(getSupportFragmentManager(),
				this));
		mViewPager.setOnPageChangeListener(this);
		// 设置页面分隔线
		mViewPager.setPageMargin(6);
		mViewPager
				.setPageMarginDrawable(android.R.drawable.divider_horizontal_bright);

		// 自定义 Tab View,并添加到ActionBar上(未设置DisplayOptions,不会显示)
		mCustomView = LayoutInflater.from(this).inflate(
				R.layout.custom_tab_view, null);
		// getParent().getActionBar().setCustomView(mCustomView);
		getActionBar().setCustomView(mCustomView);

		mScroll1 = (ImageView) mCustomView.findViewById(R.id.scroll_1);
		mScroll2 = (ImageView) mCustomView.findViewById(R.id.scroll_2);
		mScroll3 = (ImageView) mCustomView.findViewById(R.id.scroll_3);
		mScroll4 = (ImageView) mCustomView.findViewById(R.id.scroll_4);
	}

	@Override
	protected void onResume() {
		super.onResume();

		ActionBar actionBar = getActionBar();
		mActionBarOptions = actionBar.getDisplayOptions();
		// 设置DisplayOptions,显示ActionBar自定义的View
		actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM,
				ActionBar.DISPLAY_SHOW_CUSTOM | mActionBarOptions);

		setCurrentScroll(mViewPager.getCurrentItem());
	}

	@Override
	protected void onPause() {
		super.onPause();
		getActionBar().setDisplayOptions(mActionBarOptions,
				ActionBar.DISPLAY_SHOW_CUSTOM | mActionBarOptions);
	}

	public void onTabClick(View view) {
		Log.d("TAG", "onTabClick" + view.getId());
		switch (view.getId()) {
		case R.id.tab_text_1:
			mViewPager.setCurrentItem(0, false);
			break;

		case R.id.tab_text_2:
			mViewPager.setCurrentItem(1, false);
			break;

		case R.id.tab_text_3:
			mViewPager.setCurrentItem(2, false);
			break;

		case R.id.tab_text_4:
			mViewPager.setCurrentItem(3, false);
			break;
		}
	}

	private void setCurrentScroll(int selection) {
		if (mScroll1 != null && mScroll2 != null && mScroll3 != null
				&& mScroll4 != null) {
			mScroll1.setVisibility(selection == 0 ? View.VISIBLE
					: View.INVISIBLE);
			mScroll2.setVisibility(selection == 1 ? View.VISIBLE
					: View.INVISIBLE);
			mScroll3.setVisibility(selection == 2 ? View.VISIBLE
					: View.INVISIBLE);
			mScroll4.setVisibility(selection == 3 ? View.VISIBLE
					: View.INVISIBLE);
		}
	}

	@Override
	public void onPageScrollStateChanged(int arg0) {
		Log.d("ActiontBar", "onPageScrollStateChanged");
	}

	@Override
	public void onPageScrolled(int arg0, float arg1, int arg2) {
		Log.d("ActiontBar", "onPageScrolled");
	}

	@Override
	public void onPageSelected(int arg0) {
		setCurrentScroll(arg0);
		Log.d("ActiontBar", "onPageSelected");
	}

	public class PagerAdapter extends FragmentPagerAdapter {

		PreferenceFragment[] fragments;
		String[] titles;

		public PagerAdapter(FragmentManager fm, Context context) {
			super(fm);
			fragments = new PreferenceFragment[4];
			fragments[0] = new PreferenceFragment(R.xml.settings_security);
			fragments[1] = new PreferenceFragment(R.xml.settings_delay);
			fragments[2] = new PreferenceFragment(R.xml.settings_others);
			fragments[3] = new PreferenceFragment(R.xml.settings_about);

			titles = new String[4];
			titles[0] = context.getString(R.string.security);
			titles[1] = context.getString(R.string.delay);
			titles[2] = context.getString(R.string.others);
			titles[3] = context.getString(R.string.about);
		}

		@Override
		public Fragment getItem(int position) {
			return (Fragment) fragments[position];
		}

		@Override
		public int getCount() {
			return fragments.length;
		}

		@Override
		public String getPageTitle(int position) {
			return titles[position];
		}
	}
}

PreferenceFragment.java

public class PreferenceFragment extends ListFragment {

	private PreferenceManager mPreferenceManager;

	/**
	 * The starting request code given out to preference framework.
	 */
	private static final int FIRST_REQUEST_CODE = 100;
	private static final int MSG_BIND_PREFERENCES = 0;

	private ListView lv;
	private int xmlId;

	private Handler mHandler = new Handler() {
		@Override
		public void handleMessage(Message msg) {
			switch (msg.what) {
			case MSG_BIND_PREFERENCES:
				bindPreferences();
				break;
			}
		}
	};

	// must be provided
	// public PreferenceFragment() {
	//
	// }

	public PreferenceFragment(int xmlId) {
		this.xmlId = xmlId;
	}

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle b) {
		postBindPreferences();
		return lv;
	}

	@Override
	public void onDestroyView() {
		super.onDestroyView();
		ViewParent p = lv.getParent();
		if (p != null) {
			((ViewGroup) p).removeView(lv);
		}
	}

	@Override
	public void onCreate(Bundle b) {
		super.onCreate(b);
		if (b != null) {
			xmlId = b.getInt("xml");
		}
		mPreferenceManager = onCreatePreferenceManager();
		lv = (ListView) LayoutInflater.from(getActivity()).inflate(
				R.layout.preference_list_content, null);
		lv.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
		addPreferencesFromResource(xmlId);
		postBindPreferences();
	}

	@Override
	public void onStop() {
		super.onStop();
		try {
			Method method = PreferenceManager.class
					.getDeclaredMethod("dispatchActivityStop");
			method.setAccessible(true);
			method.invoke(mPreferenceManager);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	@Override
	public void onDestroy() {
		super.onDestroy();
		lv = null;
		try {
			Method method = PreferenceManager.class
					.getDeclaredMethod("dispatchActivityDestroy");
			method.setAccessible(true);
			method.invoke(mPreferenceManager);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	@Override
	public void onSaveInstanceState(Bundle outState) {
		outState.putInt("xml", xmlId);
		super.onSaveInstanceState(outState);

	}

	@Override
	public void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		try {
			Method method = PreferenceManager.class.getDeclaredMethod(
					"dispatchActivityResult", int.class, int.class,
					Intent.class);
			method.setAccessible(true);
			method.invoke(mPreferenceManager, requestCode, resultCode, data);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * Posts a message to bind the preferences to the list view.
	 * <p>
	 * Binding late is preferred as any custom preference types created in
	 * {@link #onCreate(Bundle)} are able to have their views recycled.
	 */
	private void postBindPreferences() {
		if (mHandler.hasMessages(MSG_BIND_PREFERENCES)) {
			return;
		}
		mHandler.obtainMessage(MSG_BIND_PREFERENCES).sendToTarget();
	}

	private void bindPreferences() {
		final PreferenceScreen preferenceScreen = getPreferenceScreen();
		if (preferenceScreen != null) {
			preferenceScreen.bind(lv);
		}
	}

	/**
	 * Creates the {@link PreferenceManager}.
	 * 
	 * @return The {@link PreferenceManager} used by this activity.
	 */
	private PreferenceManager onCreatePreferenceManager() {
		try {
			Constructor<PreferenceManager> c = PreferenceManager.class
					.getDeclaredConstructor(Activity.class, int.class);
			c.setAccessible(true);
			PreferenceManager preferenceManager = c.newInstance(
					this.getActivity(), FIRST_REQUEST_CODE);
			return preferenceManager;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * Returns the {@link PreferenceManager} used by this activity.
	 * 
	 * @return The {@link PreferenceManager}.
	 */
	public PreferenceManager getPreferenceManager() {
		return mPreferenceManager;
	}

	/**
	 * Sets the root of the preference hierarchy that this activity is showing.
	 * 
	 * @param preferenceScreen
	 *            The root {@link PreferenceScreen} of the preference hierarchy.
	 */
	public void setPreferenceScreen(PreferenceScreen preferenceScreen) {
		try {
			Method method = PreferenceManager.class.getDeclaredMethod(
					"setPreferences", PreferenceScreen.class);
			method.setAccessible(true);
			boolean result = (Boolean) method.invoke(mPreferenceManager,
					preferenceScreen);
			if (result && preferenceScreen != null) {
				postBindPreferences();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * Gets the root of the preference hierarchy that this activity is showing.
	 * 
	 * @return The {@link PreferenceScreen} that is the root of the preference
	 *         hierarchy.
	 */
	public PreferenceScreen getPreferenceScreen() {
		try {
			Method method = PreferenceManager.class
					.getDeclaredMethod("getPreferenceScreen");
			method.setAccessible(true);
			return (PreferenceScreen) method.invoke(mPreferenceManager);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * Adds preferences from activities that match the given {@link Intent}.
	 * 
	 * @param intent
	 *            The {@link Intent} to query activities.
	 */
	public void addPreferencesFromIntent(Intent intent) {
		throw new RuntimeException("too lazy to include this bs");
	}

	/**
	 * Inflates the given XML resource and adds the preference hierarchy to the
	 * current preference hierarchy.
	 * 
	 * @param preferencesResId
	 *            The XML resource ID to inflate.
	 */
	public void addPreferencesFromResource(int preferencesResId) {
		try {
			Method method = PreferenceManager.class.getDeclaredMethod(
					"inflateFromResource", Context.class, int.class,
					PreferenceScreen.class);
			method.setAccessible(true);
			PreferenceScreen prefScreen = (PreferenceScreen) method.invoke(
					mPreferenceManager, getActivity(), preferencesResId,
					getPreferenceScreen());
			setPreferenceScreen(prefScreen);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * Finds a {@link Preference} based on its key.
	 * 
	 * @param key
	 *            The key of the preference to retrieve.
	 * @return The {@link Preference} with the key, or null.
	 * @see PreferenceGroup#findPreference(CharSequence)
	 */
	public Preference findPreference(CharSequence key) {
		if (mPreferenceManager == null) {
			return null;
		}
		return mPreferenceManager.findPreference(key);
	}

	public interface OnPreferenceAttachedListener {
		public void onPreferenceAttached(PreferenceScreen root, int xmlId);
	}

}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.ttdevs.actionbarandpreferencefragmentdemo"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="15"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.DeviceDefault.Light" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:launchMode="singleTask" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
其他配置文件略


2、效果图如下:


3、demo下载:

http://download.youkuaiyun.com/detail/ttdevs/5864875

使用ViewPager及SharedPreferences保存用户数据的demo 使用ViewPager及SharedPreferences保存用户数据的demo。实现引导界面及保存用户是否首次启动程序 立即下载

相关推荐

逆向解析喜马拉雅新版xm-sign算法:从dws.1.6.8.js到签名生成

本文详细解析了喜马拉雅新版xm-sign算法的逆向破解方法。通过定位核心JS文件dws.1.6.8.js,构建本地Node.js模拟执行环境,并解密关键参数cid与appKey,最终实现签名算法的本地化稳定生成,为数据采集提供可靠解决方案。

weixin_29250403的博客 214

【android学习】Fragment和ViewPager

1,概念 1)认识 fragment是activity的一个界面或一个组成部分,一个activity可以由多个fragment组成,每个Fragment有自己的生命周期、可接收和处理用户事件,避免了activity有太多繁重的代码。 另外,可以根据用户的不同,动态的添加、替换和移除某个fragment。 2)生命周期 ①onAttach(Activity) 当fragm...

午后阳光 1492

同济土木非0基础三个月跨考复旦计算机攻略

跨考cs攻略前言我cs专业课如何复习How to start from zero简历其他复试 前言 建议多去工地/化工厂涡轮增压一下 我 同济土木gpa 3.2/5 挂科 * n 辣鸡项目 * n (padding 简历) 21考复旦计算机专硕 10月-12月 学习+复习 总分392 政治 68;背肖4即可 英语二 78 裸考,(高考英语140+);做点真题,建议据自己情况准备 数学二 142 ;(高考数学接近满分);做真题+模拟题,每天写一张试卷 专业课 104 ,考试生病了,下文展开。 cs专业课

piglake的博客 7238

android v7包没有viewpage,Android之ViewPager最全面详解及实现PreferenceFragment

释放双眼,带上耳机,听听看~!最近想用ViewPager写一个界面,由于是用preferencefragment写的,在网上是搜了一下午,基本没发现写的详细的,写的片片面面的,对于新手就是很难懂了,所以今天就讲解一下ViewPager的用法ViewPager简介布局管理器,允许用户翻左和右 通过页面的数据。 您提供一个实现PagerAdapter生成的页面视图显示。viewpage通常是结合使用F...

weixin_35649605的博客 489

【深大算法设计与分析】实验六 最大流应用问题(棒球赛问题) 实验报告 附代码、数据集

【内附代码与数据集】【深大算法设计与分析】实验六 最大流应用问题(棒球赛问题)

m0_74268508的博客 1294

24. SAP 标准产品里使用 OData 服务的一些细节分享

笔者在编写使用事物码 SEGW 开发 SAP OData 服务的系列步骤时,但凡遇到技术上一些疑难问题,喜欢去参照 SAP 标准产品里是如何使用 OData 服务的,不少问题都可以去参考 SAP 标准产品的 OData 服务实现细节来解决。 因此本文记录笔者在编写本教程的过程中,曾经研究过的 SAP OData 服务实现的一些细节,把这些细节分享给大家,希望能起到参考作用。 同时,教程也不断收到一些朋友在评论区留言,对于不少留言的回复,我也是拿 SAP 标准 OData 服务的实现作为论据来回复的。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2035

android开发步步为营之92:ViewPager+TabLayout+Fragment构造带标签的可左右滑动页面

ViewPager是android开发中常见的可用于页面分页,可左右滑动的控件,ViewPager可以使用的adapter可以是FragmentPagerAdapter或者是PagerAdapter,FragmentPagerAdapter extends PagerAdapter,做标签的常用控件有TabHost,PagerTabStrip,TabLayout等等,当然也可以自定义一个。用过这么

飞在江湖的专栏 1366

3、无限维系统理论中的算子与半群:概念、定理及应用

本博文深入探讨了无限维系统理论中的两个核心概念:里茨谱算子与卢默-菲利普斯定理。文章首先介绍了里茨基的定义与性质,分析了谱、预解集及特征值在无限维系统中的特性,并详细阐述了里茨谱算子的条件及其生成C0-半群的能力,结合阻尼欧拉-伯努利梁模型展示了其应用。随后,文章介绍了卢默-菲利普斯定理及其推论,通过多个偏微分方程实例(如一阶方程、柔性梁、波动方程和扩散问题)说明如何利用该定理判断算子是否生成压缩半群。此外,还强调了状态空间选择和边界条件对系统适定性的重要影响,并总结了相关问题的解决步骤与方法。

flink9streamer的博客 149

PreferenceScreen 偏好显示类 的使用

PreferenceScreen preference是偏好,首选的意思,PreferenceScreen个人翻译成 “偏好显示”,明白这个意思就好,就是说根据特点灵活的定义显示内容风格,一个屏幕可以包含多个风格,像系统自带的声音设置界面。 实现这种显示效果其实很简单,只需要借助PreferenceScreen类即可。在项目资源文件中新建xml文件夹,在里面新建preferences

Nio96的专栏 1222

79-Halcon-- visualize_object_model_3d 函数功能(交互式3D可视化)

该算子是连接3D数据与决策者的关键可视化桥梁,通过其独特的交互能力和高质量的渲染效果,将复杂的3D信息转化为直观的可视内容,大幅提升工程决策效率和质量。操作符,不仅能在窗口中渲染3D对象,还支持多种交互操作,适用于调试、展示和交互分析场景。本解析将全面探讨其参数功能及工业级应用方案。+几何类型: PointCloud/ TriMesh/CAD。+法线属性: [NX,NY,NZ]+附加数据: Attributes。是Halcon中功能强大的。+顶点属性: [X,Y,Z]+颜色属性: [R,G,B]

weixin_45590420的博客 1206

让 ABAP 开发者也能做出高质量 SAP Fiori:到底需要掌握多少前端知识?

文章摘要: 随着SAP技术演进,ABAP开发者的角色边界正在重构。传统SAP GUI时代的全栈开发模式逐渐转向RAP+Fiori Elements的新范式,其中关键技术变化包括: 开发模式转变:从前后端耦合转向RAP模型驱动开发,通过CDS注解实现UI意图表达 分工优化:Fiori Elements模板处理80%标准UI需求,Flexible Programming Model解决20%差异化需求 效率提升:注解驱动开发可在RAP建模阶段同步定义UI结构,大幅缩短交付周期 工具整合:SAP提供从建模到部署的

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 350

preferencefragment

从两个方面记录①setting.xml的一点问题②viewpager和preferencefragment 一、setting.xml <ListPreference android:dialogTitle="请选择一项" android:entries="@array/entries_list_preference" android:entryValues=...

aa1083663346的博客 121

Android SurfaceFlinger——概述(一)

对于系统渲染流程的理解是指导 SurfaceFlinger 设计的核心思想,从 Android 4.1 一直到 Android 9.0 都没有太大的变化。只要抓住这五个核心思想,我们阅读 SurfaceFlinger 的难度就会下降不少。下面看一下 SurfaceFlinger 的体系和 Skia 以及 View的绘制流程的关系。framework 面向开发者所有的 View 是便于开发的控件,里面仅仅只是提供了当前 View 各种属性以及功能。

小旭的专栏 2584

Android 设置界面修改为Iphone的tab菜单风格

好久没有写博客了!最近做了Android 设置的列表菜单风格改为Iphone的tab菜单风格的尝试!我知道,有许多朋友有自己的方式已经实现了这个界面风格的开发,今天大家来看看我的做法吧! 做这个开发前,首先要看看Android默认的设置列表菜单风格的实现!由 AndroidManifest.xml可以知道Settings这个Activity是我们关注的焦点!所以我们来到Settings.java来一探究竟,从中我们可以清除的知道他其实是一个PreferenceActivity,而Preferenc

狂发飘飘 3388

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Android PreferenceScreen的使用和详解(设置页面)

由于前面说过,Preference状态存储在SharedPreferences中,所以,每个Preference都必须有一个key,这样方便状态存储,如果当前key没有设置,在后期的熟悉操作,可能会存在报错,如果报错key is null,设置一个key即可。PreferenceScreen的用法和layout的类似,都是通过xml文件来管理的,但是PreferenceScreen的布局需要自己去创建。下拉选择,和list的相似,但是list是弹窗。开关,和原来Switch的控件一样使用,.........

1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

android设置中的Preferencescreen用法介绍与分析

<br />今天主要研究了一下设置中的Preferencescreen应用,它不仅可以作为设置界面显示,而且还能够启动activity,下面主要是对启动activity的介绍<br /> 1. Preferencescreen中启动activity<br /> 例如wireless_setting.xml中有如下片段<br /><br /> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"<br /

xiaoskery的专栏 5万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

发现preferencescreen 首选项非常好用

个人感觉在设置页面和用sharedPreferece记录控件的状态,用prefeerenceScreen是很好用的. 1.使用步骤  在res目录创建xml目录,创建就有提示了.在其他目录是不会用Preferencescreen提示的 代码如下: <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/an

闪电人 1408

Android进阶——Preference详解之Preference系的基本应用和管理(二)

这篇文章就给大家总结下Preference、PreferenceActivity、PreferenceGroup、RingtonePreference的普通应用和管理包含创建、移除和一些简单的原理验证

最美不过,心中有梦,身旁有你! 2万+

Android---------ViewPager+Fragment实现界面的转换(颜色变化)

1.布局: xml version="1.0" encoding="utf-8"?> LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_m

leehbhs的博客 1160

PreferenceScreen的使用(非常有用)

在res下建个xml文件夹,建立2个xml文件: preferencescreentest_one.xml <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:key="using_categories_in_root_screen"

上帝派来的逗比 2904

Android设置/配置页面,androidx.preference的使用

原有的android.support库已经废弃,建议使用androidx.preference,preference是一个非常简洁的设置页面,并且与系统界面拥有高契合度,让用户不会有太多的突兀感。 用官方的话来说就是: 无需与设备存储空间交互,也不需要管理界面,便能构建交互式设置画面。此库自带 Material 主题,可在不同的设备和操作系统版本之间提供一致的用户体验。...

使命初始的博客 1万+

ViewPager+Fragment+ViewPager+Fragment

最近一段时间,Android行业大不如从前轻松,企业要求越来越高了,就算入职了很多时候Android这块也不太受重视,现在Android开发者还能经常接到新需求就算是很幸运的事了,我最近的工作也是没什么活,闲来无事就整理一下Android的一些东西,以免遗忘。 这次要做的类似于许多新闻资讯类app,底部tab切换不同的功能页面,首页中又可以切换不同的新闻类型页面,当切换到最后一个新闻fragme...

publicperson的博客 4015

android开发中PreferenceScreen的使用注意事项

今天开发中需要用到android自带的偏好功能PreferenceScreen 在网上教程很多刚开始设置为                         android:defaultValue="/mnt/sdcard/歌曲存放目录"             android:summary="歌曲默认存放位置"             android:title="存储目录"

fengyunaliang的专栏 1648

Android Preference初探,另一种布局方式

记得android五大数据存储中有个SharePreferences,其他四种分别是: SQLite数据库 ContentProvider(内容提供者) 文件存储 网络存储 这里简单回顾一下SharePreference是的使用:// 1. 得到sharedPreferences,第一个参数指定SharePreference保存的xml文件的文件名,第二个参数是SharedPreferences模式

宿罪的博客 5686
上一篇: 督促学习——ViewPager实现滑动引导界面
下一篇: 点点滴滴——面试暂告一段落
ttdevs
博客等级 码龄15年 388粉丝 91原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值