2011-10-10 31 views
1

我有一个TabActivity,其中每个选项卡都有ActivityGroup。 在第一组的首页ActivityChild上,我有一个菜单选项,它给用户打开首选项的选项。 当我点击菜单上的“首选项”时,我在ActivityGroup中启动了PreferenceActivity,它显示了第一个选项卡上的PreferenceActivity。 问题是当我点击任何必须显示对话框(用于EditTextPreference)的特定首选项时。 我有以下异常:带有ActivityGroup和PreferenceActivity子项的TabActivity

android.view.WindowManager$BadTokenException: Unable to add window -- token [email protected] 

据我所知,这个问题是因为由PreferenceActivity显示对话框使用错误的环境下,但是现在我如何改变创造对话的情境没有。

Belows是我创建的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); 

任何想法?

+0

创建对话框时添加您的代码。 – blessenm

+0

我没有使用任何实现来控制如何创建对话框的方式。我只是扩展PreferenceActivity和onCreate我已经添加了addPreferencesFromResource(R.xml.preferences); – user738686

+0

为溶液[这里] [1] [1]:http://stackoverflow.com/questions/4877112/problem-showing-progressdialog-within-nested-tab-activity/8191979#8191979 –

回答

0
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 
+0

您好,我不使用自定义对话框,这就是为什么我现在不知道如何传递正确的上下文。因为如果我控制对话框的创建,我会使用getParent()作为上下文。 – user738686

+0

只是你有上下文问题..在根TabActivity的情况下总是使用选项卡活动的上下文甚至为个人活动在选项卡 –

+0

我增加了更多的代码,也许你可以更好地理解我的问题。 – user738686

0

我解决了这个问题不好解决,here 可惜我所能的唯一途径。

相关问题