Java PreferenceActivity和BroadcastReceiver-实现动态首选项
我将通过下面的代码示例动态构建一个首选项活动 “首选项”对话框显示,但关闭后我看不到任何更改 这里是我在AndroidManifest.xml中定义活动的地方Java PreferenceActivity和BroadcastReceiver-实现动态首选项,java,android,Java,Android,我将通过下面的代码示例动态构建一个首选项活动 “首选项”对话框显示,但关闭后我看不到任何更改 这里是我在AndroidManifest.xml中定义活动的地方 <activity android:name="PreferencesActivity" android:label="@string/preferences_name"> </activity> 哦,这里是暂停,我正在广播PREFS_更新意图。我确实看到了logcat消息
<activity
android:name="PreferencesActivity" android:label="@string/preferences_name">
</activity>
哦,这里是暂停,我正在广播PREFS_更新意图。我确实看到了logcat消息。此方法是我首选活动的一部分
/** 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);
}
Intent i = new Intent(this, FroyVisualsReceiver.class);
编辑:我认为这可能与这一行有关这是我的首选活动
/** 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);
}
Intent i = new Intent(this, FroyVisualsReceiver.class);
尝试一个简单的
意图
:
Intent i = new Intent();
i.setAction("com.starlon.froyvisuals.PREFS_UPDATE");
sendBroadcast(i);
我认为这是可行的,但是行
((FroyVisuals)context.updatePrefs()
崩溃了,出现了E/AndroidRuntime(8545):java.lang.RuntimeException:无法启动receiver com.starlon.froyvisuals.FroyVisualsReceiver:java.lang.ClassCastException:android.app.ReceiverRestrictedContext
尽管我想这与原始问题有点无关。:)@Scott您试图用作FroyVisuals
的上下文并不是您所期望的。对于已注册的活动BroadcastReceiver
方法onReceive
中的上下文是该活动的上下文,但对于清单中设置的BroadcastReceiver,我不知道您得到了什么上下文(可能是应用程序上下文?)。我不明白你想在FroyVisules
中更新什么。我发现onReceive()中的上下文并不像你自己所说的那样是我想象的那样。我不知道如何从BroadcastReceiver实例中获取我的FroyVisuals实例。哦,updatePrefs()
是我创建的自定义方法。它只是更新活动的内部字段,以匹配用户在PrefReferenceActivity实例中设置的首选项。