android-不同 activity 中的 SharedPreferences

问题描述

不同 activity 中的 SharedPreferences
我用下面的代码从 activity A 中加载 SharedPreferences:

private void SavePreferences(String key String value){    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);    SharedPreferences.Editor editor = sharedPreferences.edit();    editor.putString(key value);    editor.commit();   }

在 activity B 中我想加载 SharedPreferences。下面是一个异常 NullPointerException:

private void LoadPreferences(){          SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);       data = sharedPreferences.getString(""name""08:00"") ;   }

我用下面的代码,得到这个编译错误:""No enclosing instance of the type A is accessible in scope""

 private void LoadPreferences(){          SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(A.this);       data = sharedPreferences.getString(""name""08:00"") ;   }

如何访问数据?谢谢!

解决方案

在两个 Activities 中把 this 替换为 getApplicationContext()
在Activity A 的 SharedPreferences 是下面的方式:

private void SavePreferences(String key String value){        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());        SharedPreferences.Editor editor = sharedPreferences.edit();        editor.putString(key value);        editor.commit();        Intent sd=new Intent(thisSecongtess.class);        startActivity(sd);       }

Activity B 中按下面的方式获取值:

 private void LoadPreferences(){          SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());     String  data = sharedPreferences.getString(""name""08:00"") ;     Toast.makeText(thisdata Toast.LENGTH_LONG).show();   }

解决方案二:
在 shared preferences 中存储值

SharedPreferences preferences==PreferenceManager.getDefaultSharedPreferences(this);  SharedPreferences.Editor editor=preferences.edit();  editor.putString(""Name""Harneet"");  editor.commit();

从 shared preferences 中检索值:

SharedPreferences preferences==PreferenceManager.getDefaultSharedPreferences(this);  String name=preferences.getString(""Name""");  if(!name.equalsIgnoreCase(""""))  {    name=name+""  Sethi"";  /* 编辑值 */  }

从 sharedpreference 中编辑数据

SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit(); editor.putString(""text"" mSaved.getText().toString()); editor.putInt(""selection-start"" mSaved.getSelectionStart()); editor.putInt(""selection-end"" mSaved.getSelectionEnd()); editor.commit();

从 shared preference 中检索数据

SharedPreferences prefs = getPreferences(MODE_PRIVATE); String restoredText = prefs.getString(""text"" null);if (restoredText != null) {  //mSaved.setText(restoredText TextView.BufferType.EDITABLE);  int selectionStart = prefs.getInt(""selection-start"" -1);  int selectionEnd = prefs.getInt(""selection-end"" -1);  /*if (selectionStart != -1 && selectionEnd != -1)  {     mSaved.setSelection(selectionStart selectionEnd);  }*/}
时间: 2024-08-01 16:01:14

android-不同 activity 中的 SharedPreferences的相关文章

值传递-Android 同一个activity中传递值

问题描述 Android 同一个activity中传递值 在同一activity中传递值,在网友的帮助下认识到如下的存取值方法 public static class HealthMap { private static Map map = new ConcurrentHashMap(); /** * 传值 * @param key * @param obj */ public static void put(String key, Object obj) { map.put(key, obj)

android 在activity中怎么获取gridview的item的view

问题描述 android 在activity中怎么获取gridview的item的view 在gridview中,可以用OnItemClickListener的 @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { RelativeLayout mLayout = (RelativeLayout) arg1;} 方法获取mlayout.就是gridview的ite

android-从不同的 activity 中访问 SharedPreferences

问题描述 从不同的 activity 中访问 SharedPreferences 在第一个activity (MainActivity)中,我通过 SharedPreferences 保存数据: Editor editor = mGameSettings.edit(); editor.putString(GAME_PREFERENCES_SHOP, Shops.get(lv.getCheckedItemPosition())); editor.commit(); 当重启程序后,我可以从MainA

Android 管理Activity中的fragments_Android

FragmentManager 为了管理Activity中的fragments,需要使用FragmentManager. 为了得到它,需要调用Activity中的getFragmentManager()方法. 因为FragmentManager的API是在Android 3.0,也即API level 11开始引入的,所以对于之前的版本,需要使用support library中的FragmentActivity,并且使用getSupportFragmentManager()方法. 用Fragme

Android 管理Activity中的fragments

FragmentManager 为了管理Activity中的fragments,需要使用FragmentManager. 为了得到它,需要调用Activity中的getFragmentManager()方法. 因为FragmentManager的API是在Android 3.0,也即API level 11开始引入的,所以对于之前的版本,需要使用support library中的FragmentActivity,并且使用getSupportFragmentManager()方法. 用Fragme

android-Android 在Activity中动态得到frament的控件

问题描述 Android 在Activity中动态得到frament的控件 Android 在Activity中动态得到frament的控件 解决方案 这个可以不? 解决方案二: Fragment写好后, 要在哪个 Activity添加fragment如下做: 在Activity 声明 private ArrayList fmList; 初始化界面方法中写: fm1 = new Fragment1(); fm2 = new Fragment2(); fmList = new ArrayList<

Android应用中使用SharedPreferences类存储数据的方法_Android

在Android系统中提供了多种存储技术.通过这些存储技术可以将数据存储在各种存储介质上.比如sharedpreferences可以将数据保存着应用软件的私有存储区,这些存储区的数据只能被写入这些数据的软件读取.当然Android还支持文件存储.SQLite数据库和Content Provider.在这里我们将对sharedpreferences存储方式进行介绍. SharedPreferences是一种轻量级的数据存储方式,学过Web开发的同学,可以想象它是一个小小的Cookie.它可以用键值

android中使用SharedPreferences进行数据存储的操作方法_Android

很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友.对于软件配置参数的保存,如果是window软件通常我们会采用ini文件进行保存,如果是 j2se应用,我们会采用properties属性文件或者xml进行保存.如果是Android应用,我们最适合采用什么方式保存软件配置参数呢?Android 平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数.使用 SharedPrefe

了解Android API中的SharedPreferences

Preference翻译为偏好,但实际上它可以算是Setting(设置)的别名.两种叫法给人的差异在于针对的对象不同:设置更倾向于设备的属性,修改设置便是改变设备的功能;偏好则倾向于用户的性格,用户基于其个人的偏好来来形成设备的差异化.但是总体而言,它们是一致的,都是通过用户的需求改变设备的体验. 在Android的开发过程中,会在使用的API中见到很多名字中带有Preference的类和接口,此篇文章就来介绍一下这些"*Prefere*"的功能和用途. 在Android提供API中,