Android 帮助进行进度显示

Android 帮助进行进度显示,android,Android,我希望我的应用程序在连接到在线资源时以ProgressDialog开始,获取数据,解析数据,然后用它填充微调器DirectoryTransaction.doDepts()连接数据并将其解析为字符串[][]DeptResults。我尝试过其他问题和答案,但都没有成功,我真的很想让它发挥作用。现在,应用程序在执行所有这些工作时似乎会冻结几秒钟。我宁愿让它显示对话框 以下是我现在的代码: package com.test.directory; import android.app.Activity;

我希望我的应用程序在连接到在线资源时以ProgressDialog开始,获取数据,解析数据,然后用它填充微调器<下面代码中的code>DirectoryTransaction.doDepts()连接数据并将其解析为
字符串[][]DeptResults
。我尝试过其他问题和答案,但都没有成功,我真的很想让它发挥作用。现在,应用程序在执行所有这些工作时似乎会冻结几秒钟。我宁愿让它显示对话框

以下是我现在的代码:

package com.test.directory;

import android.app.Activity;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

public class Directory extends Activity {

    public static boolean test = false;
    public static int Start = 1;
    public static int Page = 1;
    public static int ResultsCount = 0;
    public static int sdk = new Integer(Build.VERSION.SDK).intValue();
    public static String[] Fields = new String[6];
    public static String[][] DeptResults;
    public static String[][] ReturnResults;
    public static String[] ResultsDetails = new String[11];

    public EditText fname = (EditText) findViewById(R.id.fname);
    public EditText lname = (EditText) findViewById(R.id.lname);
    public EditText aim = (EditText) findViewById(R.id.aim);
    public EditText phone = (EditText) findViewById(R.id.phone);
    public Spinner depts = (Spinner) findViewById(R.id.dept);


    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.searchscreen);

        DirectoryTransaction.doDepts();

        //Sets up and fills the department spinner
        final ArrayAdapter<CharSequence> deptsAdapter = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item);
        deptsAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        depts.setAdapter(deptsAdapter);
        for(int i = 0 ; i < DeptResults.length ; i++){
            deptsAdapter.add(DeptResults[i][0]);            
        }

        //Search button
        findViewById(R.id.search).setOnClickListener(new OnClickListener() {
            public void onClick(View v) {

                Start = 1;
                Page = 1;

              //Put all the info from the fields into a string array
                Fields[0] = fname.getText().toString();
                Fields[1] = lname.getText().toString();
                Fields[2] = aim.getText().toString();
                Fields[3] = phone.getText().toString();
                Fields[4] = DeptResults[(int)depts.getSelectedItemId()][1];
                Fields[5] = Integer.toString(Start);

                DirectoryTransaction.doSearch(Directory.Start, Fields[0], Fields[1], Fields[2], Fields[4], Fields[3]);


              //Shows error if more than 300 results
                if(ResultsCount > 300){
                    Toast.makeText(Directory.this, "Too many results found, please narrow your search.", Toast.LENGTH_LONG).show();
                }else{              
              //Load a new Intent and start the results activity
                Intent i = new Intent(v.getContext(), DirectoryResults.class);
                startActivity(i);
                }
            }
        });

        //Clear Button
        findViewById(R.id.clear).setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                //Clears all the fields, sets the Spinner to 0.
                fname.setText("");
                lname.setText("");
                aim.setText("");
                phone.setText("");
                depts.setSelection(0);
            }
        });
    }
}
package com.test.directory;
导入android.app.Activity;
导入android.content.Intent;
导入android.os.Build;
导入android.os.Bundle;
导入android.view.KeyEvent;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.widget.ArrayAdapter;
导入android.widget.EditText;
导入android.widget.Spinner;
导入android.widget.Toast;
公共类目录扩展活动{
公共静态布尔测试=false;
公共静态int Start=1;
公共静态int Page=1;
公共静态int resultscont=0;
public static int sdk=new Integer(Build.VERSION.sdk).intValue();
公共静态字符串[]字段=新字符串[6];
公共静态字符串[][]DeptResults;
公共静态字符串[][]返回结果;
公共静态字符串[]ResultsDetails=新字符串[11];
公共EditText fname=(EditText)findViewById(R.id.fname);
公共EditText lname=(EditText)findViewById(R.id.lname);
公共EditText目标=(EditText)findViewById(R.id.aim);
公共EditText电话=(EditText)findViewById(R.id.phone);
公共微调器部门=(微调器)findViewById(R.id.dept);
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.searchscreen);
DirectoryTransaction.doDepts();
//设置并填充部门微调器
final ArrayAdapter deptsAdapter=新的ArrayAdapter(这是android.R.layout.simple\u微调器\u项);
deptsAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉项);
部门设置适配器(部门适配器);
for(int i=0;i300){
Toast.makeText(Directory.this,“找到的结果太多,请缩小搜索范围。”,Toast.LENGTH_LONG.show();
}否则{
//加载新的意图并启动“结果”活动
Intent i=新的Intent(v.getContext(),DirectoryResults.class);
星触觉(i);
}
}
});
//清除按钮
findviewbyd(R.id.clear).setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
//清除所有字段,将微调器设置为0。
fname.setText(“”);
lname.setText(“”);
aim.setText(“”);
phone.setText(“”);
部门选举(0);
}
});
}
}
基本上,当ProgressDialog显示时,这就是我想要做的

        DirectoryTransaction.doDepts();

        //Sets up and fills the department spinner
        final ArrayAdapter<CharSequence> deptsAdapter = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item);
        deptsAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        depts.setAdapter(deptsAdapter);
        for(int i = 0 ; i < DeptResults.length ; i++){
            deptsAdapter.add(DeptResults[i][0]);            
        }
DirectoryTransaction.doDepts();
//设置并填充部门微调器
final ArrayAdapter deptsAdapter=新的ArrayAdapter(这是android.R.layout.simple\u微调器\u项);
deptsAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉项);
部门设置适配器(部门适配器);
for(int i=0;i
有什么想法/例子可以告诉我我需要什么吗?我看了好几本,还没弄明白

谢谢,我成功了。我不确定我是否需要它,所以我会摆弄它。代码如下:

package com.test.directory;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

public class Directory extends Activity {

    public static boolean test = false;
    public static int Start = 1;
    public static int Page = 1;
    public static int ResultsCount = 0;
    public static int sdk = new Integer(Build.VERSION.SDK).intValue();
    public static String[] Fields = new String[6];
    public static String[][] DeptResults;
    public static String[][] ReturnResults;
    public static String[] ResultsDetails = new String[11];

    public ArrayAdapter<CharSequence> deptsAdapter;

    ProgressDialog dialog;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.searchscreen);

        new getAllData().execute(this);

        final EditText fname = (EditText) findViewById(R.id.fname);
        final EditText lname = (EditText) findViewById(R.id.lname);
        final EditText aim = (EditText) findViewById(R.id.aim);
        final EditText phone = (EditText) findViewById(R.id.phone);
        final Spinner depts = (Spinner) findViewById(R.id.dept);

        //Sets up and fills the department spinner
        deptsAdapter = new ArrayAdapter<CharSequence>(Directory.this, android.R.layout.simple_spinner_item);
        deptsAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        depts.setAdapter(deptsAdapter);

      //Search button
        findViewById(R.id.search).setOnClickListener(new OnClickListener() {
            public void onClick(View v) {

                Start = 1;
                Page = 1;

              //Put all the info from the fields into a string array
                Fields[0] = fname.getText().toString();
                Fields[1] = lname.getText().toString();
                Fields[2] = aim.getText().toString();
                Fields[3] = phone.getText().toString();
                Fields[4] = DeptResults[(int)depts.getSelectedItemId()][1];
                Fields[5] = Integer.toString(Start);

                DirectoryTransaction.doSearch(Directory.Start, Fields[0], Fields[1], Fields[2], Fields[4], Fields[3]);


              //Shows error if more than 300 results
                if(ResultsCount > 300){
                    Toast.makeText(Directory.this, "Too many results found, please narrow your search.", Toast.LENGTH_LONG).show();
                }else{
              //Load a new Intent and start the results activity
                Intent i = new Intent(v.getContext(), DirectoryResults.class);
                startActivity(i);
                }
            }
        });

      //Clear Button
        findViewById(R.id.clear).setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
              //Clears all the fields, sets the Spinner to 0.
                fname.setText("");
                lname.setText("");
                aim.setText("");
                phone.setText("");
                depts.setSelection(0);
            }
        });
    }

    private class getAllData extends AsyncTask<Context, Void, Cursor> {
        protected void onPreExecute () {
            dialog = ProgressDialog.show(Directory.this, "", 
                    "Loading. Please wait...", true);
        }

        @Override
        protected Cursor doInBackground(Context... params) {
            DirectoryTransaction.doDepts();

            return null;
        }

        protected void onPostExecute(Cursor c) {

            for(int i = 0 ; i < DeptResults.length ; i++){
                deptsAdapter.add(DeptResults[i][0]);            
            }
            //update the UI or do soemthing
            dialog.dismiss();
        }
    }

}
package com.test.directory;
导入android.app.Activity;
导入android.app.ProgressDialog;
导入android.content.Context;
导入android.content.Intent;
导入android.database.Cursor;
导入android.os.AsyncTask;
导入android.os.Build;
导入android.os.Bundle;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.widget.ArrayAdapter;
导入android.widget.EditText;
导入android.widget.Spinner;
导入android.widget.Toast;
公共类目录扩展活动{
公共静态布尔测试=false;
公共静态int Start=1;
公共静态int Page=1;
公共静态int resultscont=0;
public static int sdk=new Integer(Build.VERSION.sdk).intValue();
公共静态字符串[]字段=新字符串[6];
公共静态字符串[][]DeptResults;
公共静态字符串[][]返回结果;
公共静态字符串[]ResultsDetails=新字符串[11];
公共阵列适配器部门适配器;
进程对话;
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState)
new getAllData().execute(this);   
 private class getAllData extends AsyncTask<Context, Void, Cursor> {
    protected void onPreExecute () {
        dialog = ProgressDialog.show(Shows.this, "", 
                "Loading shows. Please wait...", true);
    }

    @Override
    protected Cursor doInBackground(Context... params) {
        //do all the work
    }

    protected void onPostExecute(Cursor c) {
        //update the UI or do soemthing
        dialog.dismiss();
    }
}