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