Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.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 对话的麻烦_Android_Progressdialog_Android Alertdialog - Fatal编程技术网

Android 对话的麻烦

Android 对话的麻烦,android,progressdialog,android-alertdialog,Android,Progressdialog,Android Alertdialog,我有一个用户选择的按钮,我弹出一个AlertDialog来确定或取消替换某些数据的操作。在我弄明白这是一个异步过程之后,OK和CANCEL可以正常工作。 我甚至停止了多次点击。但是,当用户按OK时,我必须将信息与几个任务一起保存到内存中。OK过程大约需要三秒,这超出了不耐烦的人的极限。我想弹出一个带有消息的不确定进度条。然而,我对Java和android的陌生感阻碍了我。 下面代码中的“上下文”到底是什么 public void getData(final View v) { if(A

我有一个用户选择的按钮,我弹出一个AlertDialog来确定或取消替换某些数据的操作。在我弄明白这是一个异步过程之后,OK和CANCEL可以正常工作。 我甚至停止了多次点击。但是,当用户按OK时,我必须将信息与几个任务一起保存到内存中。OK过程大约需要三秒,这超出了不耐烦的人的极限。我想弹出一个带有消息的不确定进度条。然而,我对Java和android的陌生感阻碍了我。 下面代码中的“上下文”到底是什么

public void getData(final View v)
{
     if(AlertDialogProcessing==0)
     {   
         final String title="Set Image to Wallpaper";
         final String message="Press OK to set as Wallpaper or CANCEL";
         final String ok="OK";
         final String cancel="CANCEL";
         final AlertDialog.Builder alertbox = new AlertDialog.Builder(this);
         try{
              alertbox.setMessage(message);
              alertbox.setTitle(title);
              alertbox.setPositiveButton(ok,new DialogInterface.OnClickListener(){ 
                   public void onClick(DialogInterface arg0, int arg1)
                   {  
                        Vibrate(ClickVibrate); 
                        Drawable drawable= getSun(imageSelect);  
                        ProgressDialog dialog = ProgressDialog.show(context, "Loading", "Please wait...", true);   //<<<<<<<<<<ERROR at context
                        AlertDialogProcessing=1;     
                        SaveData(drawable,1);
                        AlertDialogProcessing=0;
                        dialog.dismiss();
                        Toast.makeText(getApplicationContext(), "Data Saved.",Toast.LENGTH_LONG).show();      
                   } 
              });

              alertbox.setNegativeButton(cancel,new DialogInterface.OnClickListener(){
                   public void onClick(DialogInterface arg0, int arg1){
                        AlertDialogProcessing=0; 
                        Vibrate(ClickVibrate); 
                   } 
              });
              //alertbox.setCanceledOnTouchOutside(false); // maybe a 4.0 problem
              alertbox.show();
        } catch(Exception e){   
              //TODO Handle BadTokenException.    
        }
     }
}
public void getData(最终视图v)
{
如果(AlertDialogProcessing==0)
{   
最终字符串title=“将图像设置为壁纸”;
最终字符串消息=“按OK设置为壁纸或取消”;
最终字符串ok=“ok”;
最终字符串cancel=“cancel”;
final AlertDialog.Builder alertbox=新建AlertDialog.Builder(此);
试一试{
alertbox.setMessage(消息);
alertbox.setTitle(标题);
alertbox.setPositiveButton(确定,新建DialogInterface.OnClickListener(){
公共void onClick(对话框接口arg0,int arg1)
{  
振动(单击振动);
Drawable Drawable=getSun(图像选择);

ProgressDialog=ProgressDialog.show(上下文,“正在加载”,“请稍候…”,true);//此处上下文是调用进度对话框的活动的上下文。因此它应该是您的活动。如果您在获取上下文方面遇到问题,您可以简单地替换

 ProgressDialog dialog = ProgressDialog.show(context, "Loading", "Please
   wait...", true);  
有,

ProgressDialog dialog = ProgressDialog.show(v.getRootView().getContext(), "Loading", "Please
   wait...", true);  
这里,v.getRootView().getContext();指的是在getData()方法中传递的视图对象的上下文。

onClick()
中,您正在创建一个progressDialog,并在UI线程上执行
saveData()
活动。您可以做的是在
onClick()中创建一个
asynchTask
并在其
onPreExecute()
显示对话框时,在
doInBackground()
onPostExecute()
中执行保存操作以关闭对话框

上下文的定义是(根据android开发者网站):

与有关应用程序环境的全局信息的接口。 这是一个抽象类,其实现由 Android系统。它允许访问特定于应用程序的资源和 类,以及应用程序级操作的up调用,例如 开展活动、广播和接收意向等


希望解释能有所帮助。

将“v”设置为final是必需的。将“v”设置为final是必需的。progressDialog从未显示,因为它被取消。因此仍然存在一个问题。行为是“确定”保持高亮显示(在保存数据时).OK/Cancel警报消失,toast显示保存已完成。仍然会有3-4秒的延迟,因为它挂在OK/Cancel上。如果我注释掉progressdialog Disclose,它会执行progressdialog(当然,它会一直等待加载)。因此,它的异步性导致它在保存数据后被处理,并且它在没有显示的情况下被丢弃。有什么帮助吗?似乎Android需要一个允许程序员口述的虚拟机监控程序似乎Android需要一个允许程序员有时口述顺序的虚拟机监控程序。我已经完成了并行和线程编程ng和asynchronous似乎是两者的结合,也是两者中令人头痛的一个。事实证明,我担心以3秒的代价保存数据,但我交给pgm的随机人没有注意到。我必须将Asynchs添加到我的工具箱中,以便下载文件。我实际上发现了google android无示例引用l谢谢你的努力。