У меня есть TabActivity, где на каждой вкладке есть ActivityGroup.
На домашнем ActivityChild первой группы у меня есть пункт меню, который дает пользователю возможность открыть настройки.
Когда я нажимаю «Предпочтения» в меню, я запускаю PreferenceActivity внутри ActivityGroup, которая показывает PreferenceActivity на первой вкладке.
Проблема в том, когда я нажимаю на любое конкретное предпочтение, которое должно отображать диалог (для EditTextPreference).
У меня есть следующее исключение:
android.view.WindowManager$BadTokenException: Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord@405d3a20
Я понимаю, что проблема в том, что диалог, который будет отображаться PreferenceActivity, использует неверный контекст, НО я сейчас не знаю, как изменить контекст созданного диалога.
Ниже приведено описание 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);
Есть идеи?