TabActivity с ActivityGroup и PreferenceActivity, дочерний - PullRequest
1 голос
/ 10 октября 2011

У меня есть 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);

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2011

Я решил эту проблему с плохим решением, здесь к сожалению, единственный способ, которым я мог.

0 голосов
/ 10 октября 2011
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
...