Android——getPreferences()、getSharedPreferences()和getDefaultSharedPreferences()区别

本文详细解析了SharedPreferences在Android中如何存储及访问共享变量,并介绍了三种不同方式的调用层次、文件命名规则及其注意事项。

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

SharedPreferences文件存储共享变量的文件路径位于“/data/data/应用程序包/shared_prefs/”目录下
首先从调用层次上来分:
1.getPreferences(int mode)是由Activity来调用的。
2.getSharedPreferences(String name,int mode)由Context调用。
3.getDefaultSharesPreferences(Context context)是PreferenceManager的静态方法

从文件命名来说:
1.getPreferences(int mode)不需要传递文件名,默认使用不带包名的类名作为文件名(即Activity java文件名,不带后缀)。
2.getSharedPreferences(String name,int mode)需要提供文件名,当然是以提供的name作为文件名
3.getDefaultSharedPreferences(Context context)也不需要提供文件名,默认使用包名作为文件名。

注意:
一些博客说getPreferences(int mode)创建的SharedPreferences文件只能在当前的Activity进行访问,其实可以在其他的Activity也可以访问,这时我们需要使用getSharedPreferences(String name,int mode),name为之前的Activity Java类的名称(不带后缀)

Android 记事本应用的基本功能通常包括创建、编辑、保存删除文本笔记。下面是一个简单的Java版Activity示例,展示了一个基本的记事本界面: ```java import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class NotePadActivity extends AppCompatActivity { private EditText noteEditText; private TextView noteTextView; private Button saveButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_note_pad); // 初始化控件 noteEditText = findViewById(R.id.edit_text_note); noteTextView = findViewById(R.id.text_view_note); saveButton = findViewById(R.id.button_save); // 设置save按钮点击事件 saveButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String note = noteEditText.getText().toString(); if (!note.isEmpty()) { // 假设我们有一个方法来存储笔记 saveNote(note); // 更新显示 updateDisplay(note); } else { Toast.makeText(NotePadActivity.this, "请输入内容", Toast.LENGTH_SHORT).show(); } } }); } private void saveNote(String note) { // 这里只是一个示例,实际可以将笔记保存到数据库或文件 // 例如,你可以使用SharedPreferences SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit(); editor.putString("note", note); editor.apply(); } private void updateDisplay(String note) { noteTextView.setText(note); } } ``` 注意,这只是一个基础版本,实际应用可能还需要考虑数据持久化、错误处理以及用户界面的完善。完整的应用程序还会包含界面布局文件(activity_note_pad.xml),其中定义了输入框、显示区域保存按钮。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值