вкладка с фрагментом диалога android.view.WindowManager $ BadTokenException: - PullRequest
1 голос
/ 06 марта 2012

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

.

android.view.WindowManager $ BadTokenException: невозможно добавить окно - токен android.app.LocalActivityManager$LocalActivityRecord@4137eb30 is недействительный; ваша деятельность работает?

Но тот же код работает в обычном режиме (значит, без вкладки). Я пробовал разные решения, но ни одно не работает.

Ниже приведен код.

public class MyDialogFragment extends DialogFragment {
    static Context mn;
    static Activity ji;

    static MyDialogFragment newInstance() {

        String title = "is this  success";

        MyDialogFragment f = new MyDialogFragment();
        Bundle args = new Bundle();
        args.putString("title", title);

        f.setArguments(args);
        return f;
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        String title = getArguments().getString("title");
        Dialog myDialog = new AlertDialog.Builder(getActivity()).setIcon(R.drawable.ic_launcher).setTitle(title)
                .setPositiveButton("OK", new DialogInterface.OnClickListener() {

                    public void onClick(DialogInterface dialog, int which) {
                        ((Code) getActivity()).okClicked();
                    }
                }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

                    public void onClick(DialogInterface dialog, int which) {
                    }
                }).create();

        return myDialog;
    }
}

Активность

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        mthird.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub

                OpenDialog();
            }

        });

    }

    void OpenDialog() {
        MyDialogFragment myDialogFragment = MyDialogFragment.newInstance();
        myDialogFragment.show(getFragmentManager(), "myDialogFragment");
        System.out.println("cancelbutton");
    }

    public void okClicked() {
        String textok = " Title";
        MySecondDialog myDialogFragment = MySecondDialog.newInstance(textok);
        myDialogFragment.show(getFragmentManager(), "myDialog");
    }

    public void cancelClicked() {
        String textcancel = "Reason";
        MySecondDialog myDialogFragment = MySecondDialog.newInstance(textcancel);
        myDialogFragment.show(getFragmentManager(), "myDialogFragment");
    }

}

1 Ответ

2 голосов
/ 07 марта 2012

Попробуйте использовать родительский контекст активности Как

(Activity(mn)).getParent()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...