Android 带有ActivityGroup和PreferenceActivity子级的TabActivity

Android 带有ActivityGroup和PreferenceActivity子级的TabActivity,android,tabactivity,preferenceactivity,activitygroup,Android,Tabactivity,Preferenceactivity,Activitygroup,我有一个选项卡Activity,其中每个选项卡都有ActivityGroup。 在第一组的home ActivityChild上,我有一个菜单选项,用户可以选择打开首选项。 当我单击菜单上的“首选项”时,我在ActivityGroup中启动PreferenceActivity,它在第一个选项卡上显示PreferenceActivity。 问题是当我单击任何特定的首选项时,它必须显示一个对话框(对于EditTextPreference)。 我有以下例外: android.view.WindowMa

我有一个选项卡Activity,其中每个选项卡都有ActivityGroup。 在第一组的home ActivityChild上,我有一个菜单选项,用户可以选择打开首选项。 当我单击菜单上的“首选项”时,我在ActivityGroup中启动PreferenceActivity,它在第一个选项卡上显示PreferenceActivity。 问题是当我单击任何特定的首选项时,它必须显示一个对话框(对于EditTextPreference)。 我有以下例外:

android.view.WindowManager$BadTokenException: Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord@405d3a20
我知道问题是因为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) {     

    }   
}
我不想创建自定义对话框。我想使用偏好活动机制来实现这一点。 下面是我用来添加到组中的代码:

i = new Intent(MyActivity.this, PreferencesActivity.class);
TabGroupActivity parentActivity = (TabGroupActivity) getParent();
parentActivity.startChildActivity("PreferencesActivity", i);

有什么想法吗?

在创建对话框时添加代码。我没有使用的任何实现来控制对话框的创建方式。我只是扩展了PreferenceActivity,并在创建时添加了addPreferencesFromResource(R.xml.preferences);糟糕的解决方案[HERE][1][1]:嗨,我不使用自定义对话框,这就是为什么我现在不知道如何传递正确的上下文。因为如果我控制对话框的创建,我会使用getParent()作为上下文。只是你有上下文问题。。在根TabActivity的情况下,始终使用Tab活动的上下文,即使对于tabI中的单个活动添加了更多代码,也许您可以更好地理解我的问题。作为一种解决方法,我在ActivityGroup之外启动了PreferenceActivity作为一个单独的活动。无论如何,谢谢你的评论。
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