【问题标题】:TabActivity with ActivityGroup and PreferenceActivity childTabActivity 与 ActivityGroup 和 PreferenceActivity 子
【发布时间】:2011-10-10 17:06:44
【问题描述】:

我有一个 TabActivity,其中每个选项卡都有 ActivityGroup。 在第一组的家庭 ActivityChild 上,我有一个菜单选项,它为用户提供了打开首选项的选项。 当我单击菜单上的“首选项”时,我在 ActivityGroup 中启动 PreferenceActivity,它在第一个选项卡上显示 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);

有什么想法吗?

【问题讨论】:

  • 在创建对话框时添加代码。
  • 我没有使用任何实现来控制如何创建对话框。我只是扩展了 PreferenceActivity 和 onCreate 我添加了 addPreferencesFromResource(R.xml.preferences);
  • 糟糕的解决方案 [这里][1] [1]:stackoverflow.com/questions/4877112/…

标签: android tabactivity preferenceactivity activitygroup


【解决方案1】:
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

【讨论】:

  • 嗨,我不使用自定义对话框,这就是为什么我现在不如何传递正确的上下文。因为如果我控制对话框的创建,我会使用 getParent() 作为上下文。
  • 只是您遇到了上下文问题。如果是 Root TabActivity,即使对于选项卡中的单个活动,也始终使用选项卡活动的上下文
  • 我添加了更多代码,也许你能更好地理解我的问题。
  • 作为一种解决方法,我在 ActivityGroup 之外将 PreferenceActivity 作为单独的活动启动。无论如何感谢 cmets。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多