sma*_*use 0 android outer-join inner-classes android-context android-asynctask
我创建了这个AsyncTask内部类,现在我想把它变成外层.这是代码:
private class DownloadDataFromServer extends AsyncTask<String, Integer, String> {
ProgressDialog dialog;
boolean connErr = false;
boolean soErr = false;
@Override
protected void onPreExecute() {
dialog = new ProgressDialog(HomePage.this); !!!!PROBLEM!!!!
dialog.setIndeterminate(false);
dialog.setMax(100);
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setCancelable(false);
dialog.setTitle("Download");
dialog.setMessage("Updating...");
dialog.show();
super.onPreExecute();
}
@Override
protected String doInBackground(String... urls) {
// do something
}
protected void onProgressUpdate(Integer... progress) {
// Update the progress
dialog.setProgress(progress[0]);
}
@Override
protected void onPostExecute(String result) {
if (connErr || soErr) {
String msg = "Bad connection";
AlertDialog.Builder builder;
builder = new AlertDialog.Builder(HomePage.this); !!!!PROBLEM!!!!
builder.setCancelable(false);
builder.setTitle("Connection timeout");
builder.setMessage(msg);
builder.setPositiveButton("Retry", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();
new DownloadDataFromServer().execute(new String[] { "http://www.example.com" });
}
});
builder.setNegativeButton("Exit", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
finish(); !!!!PROBLEM!!!!
}
});
AlertDialog dialog = builder.create();
dialog.show();
} else {
if (Integer.parseInt(result) <= 0) {
Toast.makeText(getBaseContext(), "Error!", Toast.LENGTH_SHORT).show(); !!!!PROBLEM!!!!
} else {
Toast.makeText(getBaseContext(), "OK!", Toast.LENGTH_SHORT).show(); !!!!PROBLEM!!!!
}
}
dialog.dismiss();
}
}
Run Code Online (Sandbox Code Playgroud)
请注意"!!!!问题!!!!" 上面代码中的字符串:我得到的所有错误.我试图应用一些解决方法,但最后我无法使其工作.另外我也要用
private Database db = new Database(this);
Run Code Online (Sandbox Code Playgroud)
但我不知道应该用什么代替"这个".请帮我以正确的方式转换这个内部类.
你应该constructor 为DownloadDataFromServer类创建一个参数并将Context作为参数传递
Context mCon;
public DownloadDataFromServer(Context con){
this.mCon=con;
}
Run Code Online (Sandbox Code Playgroud)
并将此mCon上下文用于您DownloadDataFromServer喜欢的任何地方
builder = new AlertDialog.Builder(mCon);
Run Code Online (Sandbox Code Playgroud)
最后DownloadDataFromServer从任何Activity喜欢中调用
new DownloadDataFromServer(your_Activity.this).execute(......);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |