我将通过以下代码示例动态构建首选项活动。
首选项对话框显示,但关闭后我无法看到任何更改。
这是我在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();
}
}
}
哦,这是onPause,我正在广播PREFS_UPDATE intent。我确实看到了logcat消息。此方法是我的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);
答案 0 :(得分:1)
尝试一个简单的Intent
:
Intent i = new Intent();
i.setAction("com.starlon.froyvisuals.PREFS_UPDATE");
sendBroadcast(i);