我有一个TabActivity,每个选项卡都有ActivityGroup。在第一组的home ActivityChild上,我有一个菜单选项,它为用户提供了打开首选项的选项。当我点击菜单上的"Preferences"时,我在ActivityGroup中启动PreferenceActivity,它在第一个选项卡上显示PreferenceActivity。问题是,当我点击任何特定的偏好,必须显示一个对话框(为EditTextPreference)。我有以下例外:
android.view.WindowManager$BadTokenException: Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord@405d3a20
我明白这个问题是因为preferences activity显示的对话框使用了错误的上下文,但我现在不知道如何改变创建的对话框的上下文。
下面是我创建的PreferenceActivity。
public class PreferencesActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.preferences);
addPreferencesFromResource(R.xml.preferences);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
prefs.registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key) {
}
}
我不想创建自定义对话框。我想使用PreferenceActivity的机制来实现这一点。下面是我用来添加到组的代码:
i = new Intent(MyActivity.this, PreferencesActivity.class);
TabGroupActivity parentActivity = (TabGroupActivity) getParent();
parentActivity.startChildActivity("PreferencesActivity", i);
任何想法?
This is very common problem with dialog's in Tab Host.
Actually the Activity context is not sufficient to show a Dialog in Tab.
You have to use the context of your GroupActivity for the dialog to be enabled without exception