0
次のコード例では、設定作業を動的に構築します。PreferenceActivityとBroadcastReceiver - 動的な設定を実装する
設定ダイアログショーが、私はそれを閉じた後に任意の変更を確認することはできませんよ。私はAndroidManifest.xmlを
<activity
android:name="PreferencesActivity" android:label="@string/preferences_name">
</activity>
での活動を定義していますのはここ
は、私は受信機を定義していますのはここだのです。
<receiver
android:name="FroyVisualReceiver"
android:label="@string/app_name"
android:exported="false">
<intent-filter>
<action android:name="com.starlon.froyvisuals.PREFS_UPDATE"/>
</intent-filter>
</receiver>
ここにBroadcastReceiverがあります。私はlogcatで "WTF"を見ることはありません。私は間違って何をしていますか?
package com.starlon.froyvisuals;
import android.content.BroadcastReceiver;
import android.content.Intent;
import android.content.Context;
import android.util.Log;
public class FroyVisualsReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Log.e("WTFWTF", "WTFWTFWTFW");
String action = intent.getAction();
if(action.equals("com.starlon.froyvisuals.PREFS_UPDATE"))
{
((FroyVisuals)context).updatePrefs();
}
}
}
ああ、ここで私はlogcatのメッセージが表示されないPREFS_UPDATE intent.Iを放送していonPauseです。このメソッドは私のPreferenceActivityの一部です。
/** another activity comes over this activity */
@Override
public void onPause()
{
Log.i(TAG, "onPause ================================ ");
super.onPause();
Intent i = new Intent(this, FroyVisualsReceiver.class);
i.setAction("com.starlon.froyvisuals.PREFS_UPDATE");
sendBroadcast(i);
}
編集:これはこの行と関係があると思われます。 「this」は私のPreferenceActivityを指しています。
Intent i = new Intent(this, FroyVisualsReceiver.class);
私が働いていたと思いますが、行は、 '((FroyVisuals)コンテキスト).updatePrefs()' 'E/AndroidRuntime(8545)と、それをクラッシュ:java.lang.RuntimeException:受信者を開始できませんcom.starlon.froyvisuals.FroyVisualsReceiver:java.lang.ClassCastException:android.app.ReceiverRestrictedContext ' – Scott
これは私が推測する元の問題とは少し関係ありません。 :) – Scott
@Scottあなたが 'FroyVisuals'として使用しようとしている文脈は、まさにあなたが期待しているものではありません。アクティビティが 'BroadcastReceiver'に登録されていると、メソッドonReceiveのコンテキストはそのアクティビティのコンテキストですが、マニフェストに設定されている放送受信機では、どのコンテキストを取得するのかはわかりません。そして、私はあなたが 'FroyVisuals'で更新しようとしていることを理解していません。 – Luksprog