Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PreferenceActivity和BroadcastReceiver-实现动态首选项_Java_Android - Fatal编程技术网

Java PreferenceActivity和BroadcastReceiver-实现动态首选项

Java PreferenceActivity和BroadcastReceiver-实现动态首选项,java,android,Java,Android,我将通过下面的代码示例动态构建一个首选项活动 “首选项”对话框显示,但关闭后我看不到任何更改 这里是我在AndroidManifest.xml中定义活动的地方 <activity android:name="PreferencesActivity" android:label="@string/preferences_name"> </activity> 哦,这里是暂停,我正在广播PREFS_更新意图。我确实看到了logcat消息

我将通过下面的代码示例动态构建一个首选项活动

“首选项”对话框显示,但关闭后我看不到任何更改

这里是我在AndroidManifest.xml中定义活动的地方

    <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实例中设置的首选项。