Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android DialogFragment不';t停止主线程执行_Android - Fatal编程技术网

Android DialogFragment不';t停止主线程执行

Android DialogFragment不';t停止主线程执行,android,Android,我正试图阻止codecan显示的DialogFragment之后的代码,但更精确地说,它不起作用。问题是,当我调用notifiAll时,所有完成的都没有停止等待,我不明白为什么。。有人能告诉我我的秘密吗。谢谢大家原谅我的英语 下面是代码: ModifyDialog modifyDialog=(ModifyDialog)ModifyDialog.CreateNewInstace(); Thread done=null; modifyDialog.

我正试图阻止codecan显示的DialogFragment之后的代码,但更精确地说,它不起作用。问题是,当我调用notifiAll时,所有完成的都没有停止等待,我不明白为什么。。有人能告诉我我的秘密吗。谢谢大家原谅我的英语

下面是代码:

 ModifyDialog modifyDialog=(ModifyDialog)ModifyDialog.CreateNewInstace();
            Thread done=null;

            modifyDialog.SetListener(new ModifyDialog.NoticeDialogListener() {
                @Override
                public void onDialogPositiveButton(DialogInterface dialogFragment) {
                    synchronized (this) {
                        notifyAll();
                    }
                }

                @Override
                public void onDialogNegativeButton(DialogInterface dialogFragment) {
                    synchronized (this) {
                        notifyAll();
                    }
                }
            });
            modifyDialog.show(
                    getActivity().getSupportFragmentManager(),"selectmode"
            );
            final Button MODIFICA=(Button)v;
            done=new Thread(){
                public void start(){
                    synchronized (this) {
                        try {
                            super.wait();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }

                        Log.i("Thread state ","notificated");

                        if (MODIFICA.getText().equals("MODIFICA")) {
                            MODIFICA.setText("Salva");
                            MOD = true;
                            setModificatedElement();

                        } else {
                            MODIFICA.setText("MODIFICA");
                            MOD = false;
                            SaveChanges();
                            setModificatedElement();
                        }
                    }
                }
            };
在不同的对象上调用
notifyAll()
wait()
(内部类的实例,
this
始终引用最内部类的实例)。解决方案:
(1) 使用
modifyDialog
(必须是最终版本):
modifyDialog.wait()
modifyDialog.notifyAll()

(2) 使用DialogFragment(或您正在处理的任何外部类)实例:
DialogFragment.this.wait()
DialogFragment.this.notifyAll()

(3) 声明并设置一个新的
private final Object sync=new Object()
并使用
sync.wait()
sync.notifyAll()
在不同对象上调用
notifyAll()
wait()
(内部类的实例,
始终指最内部类的实例)。解决方案:
(1) 使用
modifyDialog
(必须是最终版本):
modifyDialog.wait()
modifyDialog.notifyAll()

(2) 使用DialogFragment(或您正在处理的任何外部类)实例:
DialogFragment.this.wait()
DialogFragment.this.notifyAll()

(3) 声明并设置一个新的
private final Object sync=new Object()
并使用
sync.wait()
sync.notifyAll()