在学习对话框时,在对话框上显示进度条,安书上的函数一步一步写下来,以为就能过成功实现,可以还是出现了一点问题,也可能是自己粗心造成的吧,然后在Android群里找了一个前辈帮我解决,不仅解决了问题,还学到了一些东西,下面和大家分析一下,我是新手,大神勿喷哈。
一:思路,@H_403_7@新建一个xml布局文件,progressbar.xml,上图:
然后在activityac_main.xml里添加一个按钮,设置监听,按下按钮后调用setProgressBar(View view)函数,然后弹出带有进度条的对话框。程序实现部分如下:
问题就出现在上图红色圈里面那两条语句,第一这两条语句的位置不能调换,第二在去获得进度条的资源时必须在前加上barview.,不然都会出错。
二 :原因分析@H_403_7@:像我们平时写button1 = (Button)findViewById(R.id.button1);细心思考的人会发现,其实这个语句可以这个写button1 = (Button)this.@H_403_7@findViewById(R.id.button1);this指向当前的窗口,写的时候被省略了。但是在我这个程序里面进度条的控件是在另一个xml文件中,所以第一步要获得progressbar.xml的资源,View barview = this.getLayoutInflater().inflate(R.layout.progressbar,null);第二步再去获得progressbar.xml文件中进度条的资源,final ProgressBar mbar = (ProgressBar)barview.findViewById(R.id.progressBar1);,所以这两句不能调换,并且要加上barview.,如果不加就会出错,不加前面默认就是this,指向activity_main.xml,而进度条在progressbar.xml里,所以要加上barview.,并且两句不能调换,必须先获得progressbar.xml的资源,再获得progressbar控件的资源。@H_403_7@
原文链接:https://www.f2er.com/xml/297568.html