Я пытаюсь передать данные без использования намерений, чтобы определенные классы могли получить доступ к данным. Поэтому я решил использовать SharedPreferences. Когда я запускаю код, у меня есть Toast в методе End(), отображающий url, который я задал в методе Start(). Тост отображает мое сообщение по умолчанию, но не адрес, который я сохранил в SharedPreferences.Android SharedPreferences Issue - Получить данные из другого класса
Вот код для метода 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();
}
}
В принципе все, что я хочу do - получать данные из другого класса, не заставляя их отслеживать и передавать его с помощью намерений, когда я могу использовать другой класс.
Что я делаю неправильно? Любая помощь приветствуется.
Смотрите мой обновленный ответ. –