1

各タブにActivityGroupがあるTabActivityがあります。最初のグループのホーム ActivityChild には、ユーザーに設定を開くオプションを提供するメニュー オプションがあります。メニューの [Preferences] をクリックすると、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);

何か案は?

4

1 に答える 1

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
于 2011-10-10T18:28:00.233 に答える