我正在开发一个名为“驱动器模式”的应用,它允许用户在设置中输入自定义消息,并将此消息自动回复给任何传入的文本。 (当然还有其他功能)我的问题是尝试引用静态字符串并使用getApplicationContext();
我从EditTextPreference中抓取文本,并尝试在多个活动中访问此字符串。
修复:此问题现已修复,我已编辑整个帖子,以便更好地帮助可能遇到同样问题的其他人。谢谢你的帮助。
public class Main extends Activity implements OnSharedPreferenceChangeListener {
...
public static String reply = "";
...
public void loadPreferences() {
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
settings.registerOnSharedPreferenceChangeListener(Main.this);
if (settings.getBoolean("cbReply", true)) {
reply = settings.getString("tbMessage", "@string/pd_message");
...
} else {
...
}
答案 0 :(得分:4)
您可以通过添加Context参数
使这些方法保持静态public static void reply(Context context) {
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
final String message = settings.getString("message", "@string/pd_message");
send(context, Receiver.number, message);
}
public void send(Context context, String number, String message) {
PendingIntent pi = PendingIntent.getActivity(context, 0, new Intent(context, Main.class), 0);
SmsManager sm = SmsManager.getDefault();
if (Receiver.number != "") {
sm.sendTextMessage(number, null, message, pi, null);
}
}