Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.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 如何在应用程序关闭/键盘打开之前停止显示toast(不重叠键盘布局和主页)_Android_Keyboard_Toast_Android Toast - Fatal编程技术网

Android 如何在应用程序关闭/键盘打开之前停止显示toast(不重叠键盘布局和主页)

Android 如何在应用程序关闭/键盘打开之前停止显示toast(不重叠键盘布局和主页),android,keyboard,toast,android-toast,Android,Keyboard,Toast,Android Toast,我只是想澄清一下我的问题:当call OnStop/OnPause/Edit Text OnClick时,我已经在结束祝酒词了。尽管标题看起来像,但这并不是:抱歉,我找不到更好的标题 因此,我不是问如何关闭toast,而是问如何在完成应用程序之前更新toast closed 举个例子,我的nexus 5 4.4.4自带的闹钟在您删除设置的闹钟时会显示一个通知。如果在关闭/最小化应用程序时,它会关闭toast,然后关闭/最小化应用程序。我会知道允许我这样做的代码 这是我的示例代码: public

我只是想澄清一下我的问题:当call OnStop/OnPause/Edit Text OnClick时,我已经在结束祝酒词了。尽管标题看起来像,但这并不是:抱歉,我找不到更好的标题

因此,我不是问如何关闭toast,而是问如何在完成应用程序之前更新toast closed

举个例子,我的nexus 5 4.4.4自带的闹钟在您删除设置的闹钟时会显示一个通知。如果在关闭/最小化应用程序时,它会关闭toast,然后关闭/最小化应用程序。我会知道允许我这样做的代码

这是我的示例代码:

public class MainActivity extends Activity {
        private Toast toast;
        private Button buttonClick;
        private EditText editTextClick;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            buttonClick = (Button) findViewById(R.id.buttonClick);
            editTextClick = (EditText) findViewById(R.id.editTextClick);

            buttonClick.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    if (toast != null) {
                        toast.cancel();
                    }
                    toast = Toast.makeText(this, "This might close before the app stop", Toast.LENGTH_SHORT);
                    toast.show();
                }
            });


             editTextClick.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    toast = Toast.makeText(this, "This might close before the keyboard open", Toast.LENGTH_SHORT);
                    toast.show();
                    if (toast != null) {
                         toast.cancel();
                    }
                }
            });

        }

        @Override
        protected void onStop() {
            // TODO Auto-generated method stub
            if (toast != null) {
                toast.cancel();
            }

            super.onStop();
        }

        @Override
        protected void onPause() {
            // TODO Auto-generated method stub
            if (toast != null) {
                toast.cancel();      // This close toast when stop called 
            }
            super.onPause();
        }

    }
我试图在每次单击编辑文本时关闭toast通知。但它首先打开键盘,将烤面包和键盘重叠一段时间,然后关闭烤面包

当我关闭应用程序或备用应用程序时也会发生同样的情况。吐司在与其他布局重叠后消失

我已经试着用一根线了;在try catch子句内和iftoast之后!=null{toast.cancel;},但不更改任何内容


在这个示例代码中,我可以做些什么,让它关闭toast,然后执行其他操作,如打开键盘、关闭应用程序、显示最近的应用程序等。

也许你不打算这么做,toast的设计方式是,它们在给定的时间后将消失

您可能要做的是将您希望它关闭的事件的Toast duration设置为零,但是要小心,因为cero将类似于将LENGTH_设置为SHORT,您可能需要覆盖可能的值,它们应该是毫秒

尝试在onclick侦听器之外初始化您的toast,这可能会使您的onStop和onPause取消生效,请查看以下答案: