3

ユーザーがカスタムメッセージを設定に入力し、このメッセージを着信テキストに自動返信できるようにするドライブモードと呼ばれるアプリに取り組んでいます。(もちろん他の機能とともに)私の問題は、静的文字列を参照しようとしていて、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 {
            ...
        }
4

1 に答える 1

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);
    }
}
于 2013-07-07T05:22:02.610 に答える