gpt4 book ai didi

java - Android SharedPreferences 问题 - 从另一个类获取数据

转载 作者:行者123 更新时间:2023-12-01 14:38:48 24 4
gpt4 key购买 nike

我尝试在不使用 Intent 的情况下传递数据,以便某些类可以访问数据。所以我决定使用 SharedPreferences。当我运行代码时,End() 方法中的 Toast 显示我在 Start() 方法中设置的 url。 Toast 显示我的默认消息,但不显示我存储在 SharedPreferences 中的 url。

这是 Start() 方法的代码:

import java.net.URI;
import java.net.URISyntaxException;

import android.content.Intent;
import android.content.SharedPreferences;
import android.app.Activity;
import android.widget.Toast;
import android.net.Uri;
import android.os.Bundle;

public class Start extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String uriStr = "http://www.google.com";
URI uri = null;

try {
uri = new URI(uriStr);
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

String trackUri = uri.toString();
SharedPreferences sharedPref = getSharedPreferences("FileName", MODE_PRIVATE);
SharedPreferences.Editor prefEditor = sharedPref.edit();
prefEditor.putString("track_uri", trackUri);
prefEditor.commit();
Intent intent = new Intent(getBaseContext(), End.class);
startActivity(intent);
}

}

这是 End() 方法的代码:

import java.net.URI;
import java.net.URISyntaxException;

import android.content.Context;
import android.content.SharedPreferences;
import android.app.Activity;
import android.widget.Toast;
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;

public class End extends Activity {
private Context mContext;

public End() {
}

public End (Context context) {
mContext = context;
}

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = getApplicationContext();
String trackUri = "Test";
//SharedPreferences sharedPref = getSharedPreferences("FileName", MODE_PRIVATE);
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(mContext);
sharedPref.getString("track_uri", trackUri);
Toast.makeText(getApplicationContext(), trackUri, Toast.LENGTH_LONG).show();
}
}

基本上我想做的就是从另一个类获取数据,而不必跟踪它,并在我可以使用另一个类时使用 Intents 传递它。

我做错了什么?如有任何帮助,我们将不胜感激。

最佳答案

开始中替换

SharedPreferences sharedPref = getSharedPreferences("FileName", MODE_PRIVATE); 

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);

编辑:

刚刚意识到!您没有设置 trackUri 变量。

sharedPref.getString("track_uri", trackUri);

应该是

trackUri = sharedPref.getString("track_uri", trackUri);
<小时/>

注意:如果您只是尝试传递字符串,则可以将其添加到 Start 中的 Intent extras 中。例如

intent.putExtra("track_uri", trackUri);

然后在End中检索:

String uriString = getIntent().getStringExtra("track_uri");

关于java - Android SharedPreferences 问题 - 从另一个类获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16203013/

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