Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.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上AlertDialog的创建_Android_Multithreading_Android Alertdialog_Android Dialogfragment - Fatal编程技术网

了解android上AlertDialog的创建

了解android上AlertDialog的创建,android,multithreading,android-alertdialog,android-dialogfragment,Android,Multithreading,Android Alertdialog,Android Dialogfragment,我刚接触安卓系统,只花了三天时间,主要是学习基础知识。在研究android警报对话框的创建时,我得到了以下代码: OnClickListener oclBtnOk = new OnClickListener() { @Override public void onClick(View v) { AlertDialog alertDialog = new AlertDialog.Builder(MainActivity

我刚接触安卓系统,只花了三天时间,主要是学习基础知识。在研究android警报对话框的创建时,我得到了以下代码:

OnClickListener oclBtnOk = new OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();
                alertDialog.setTitle("Title");
                alertDialog.setMessage("Message");
                alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int which) {
                      // TODO Add your code for the button here.
                   }
                });
                alertDialog.show();            
            }
          };        
但我还有一些事情要知道:

1-我第一次编写代码时使用的是
AlertDialog-AlertDialog=new-AlertDialog.Builder(this.create()改为
AlertDialog AlertDialog=新建AlertDialog.Builder(MainActivity.this).create()。第一段代码不需要编译,那么,到底有什么区别呢?这意味着对话框生成器是son还是与MAI活动有某种依赖关系?这意味着此对话框中的侦听器位于主活动内

2-这真的是创建简单警报对话框的正确方法吗?”因为在我的控制台中,我看到一条红线写着“ActivityManager:警告:活动未启动,其当前任务已被置于最前面”,并且正在研究他们建议使用AlertDialogFragment作为对话框的容器


我的最后一个问题有点复杂,但简单的回答是“是”,这将有助于我进行更深入的研究——android有某种EDT(事件调度线程),因为它是基于java的?我的意思是,要处理图形(如进度条),我应该将它们分割成另一个线程吗?

回答第一个问题:

AlertDialog alertDialog = new AlertDialog.Builder(this).create(); 
代码在匿名类中运行,因此
不引用从
上下文
派生的对象。添加
main活动。
使参数引用成为从
Context

你的第二个问题:这真的是正确的方法吗。。。。? 这当然是一种可以接受的方式。还有其他的

您看到的有关将活动带到前台的消息与对话框无关。您可以通过在启动新调试会话之前退出应用程序来消除它

  • AlertDialog.Builder
    需要
    上下文。代码位于
    OnClickListener
    匿名子类中,而不是
    上下文
    引用子类实例。要引用父活动类的
    this
    ,其范围为
    MainActivity。this
    ,活动为
    上下文

  • 在你学习曲线的这一点上没关系。“警告:活动未启动,其当前任务已放在前面”无需担心-应用程序已在运行,只是放在前面,没有重新启动

  • Android不运行AWT,也没有这个名字的EDT。但是,主线程(也称为UI线程)也执行类似的操作