gpt4 book ai didi

Android 非 Activity getSharedPreferences

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:51:32 24 4
gpt4 key购买 nike

我在从非 Activity 类读取 getSharedPreferences 以在播放器中设置播放列表时遇到问题...在我的 Activity 中,我从 edittext 中获取字符串变量以获取文件夹路径以处理音频文件...

    public class MainActivity extends Activity {


String ppp;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String PATH = getSharedPreferences("PATH", MODE_PRIVATE).getString("path", ppp);
if (PATH == null){
..........
...........
path_tv.setText("folder is undefined");
}
else {
path_tv.setText("folder defined: /mnt/sdcard/" + PATH);
}
set_path.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
if (path_edit.getText().toString().length() == 0){
Toast.makeText(getBaseContext(), "folder is undefined", Toast.LENGTH_SHORT).show();
}
else {
ppp = path_edit.getText().toString();
getSharedPreferences("PATH", MODE_PRIVATE)
.edit()
.putString("path", ppp)
.commit();
File folder = new File(Environment.getExternalStorageDirectory() + "/" + ppp);
boolean success = false;
if (!folder.exists()) {
success = folder.mkdir();
if (success) Toast.makeText(getBaseContext(), ".....", Toast.LENGTH_SHORT).show();
}
String PATH = getSharedPreferences("PATH", MODE_PRIVATE).getString("path", ppp);
path_tv.setText("........ /mnt/sdcard/" + PATH);
path_edit.setText("");
}
}
});

所以,在 Activity 中,我可以在共享首选项中更改和保存 String 的值...但是我可以从公共(public)课上做吗...?欣赏任何例子...

最佳答案

一种方法是使用 Application目的。这是一个肮脏的技巧,但有时还是很有帮助的。

首先,您的 Application 类中需要一个静态成员,因此:

public class MyApplication extends Application {
private static MyApplication instance;

@Override
public void onCreate() {
super.onCreate();
instance = this;
}

public static MyApplication getInstance() {
return instance;
}
}

由于 Application 对象总是在创建和运行任何 Activity 之前创建,并且在整个应用程序生命周期中保持不变,因此您始终可以确保拥有合适的对象。

然后在您的代码中只需调用 MyApplication.getInstance() 即可获得全局应用上下文。

记得在 list 中声明MyApplication

关于Android 非 Activity getSharedPreferences,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12405699/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com