gpt4 book ai didi

Android IllegalArgumentException 为 dismissDialog

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:52:49 28 4
gpt4 key购买 nike

我使用以下代码从我们的互联网上下载了一些文件。

public class SplashDownload extends Activity {

public static final int PROGRESS_DIALOG = 0;
private ProgressDialog mProgressDialog;
private WordDataHelper wordDataHelper;
private ExtraDataHelper extraDataHelper;

// put your file path here
private String filePath = "http://test.com/Assets/";
// put your filename here
private String fileName;
// put your download directory name here
private String downloadDir;

private int wordCounter = 0, extraCounter = 0, counter = 1;

private boolean wordDLOn = true;
private int totalFileNo;

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

private void goForward() {

Intent intent = new Intent().setClass(this, LangH.class)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
}

private void doNext() {

if (wordDLOn) {

System.out.print("wordDetails update: "
+ wordDetails[wordCounter - 1][0]
+ extraDetails[extraCounter][0] + fileName);
wordDataHelper.updateDLStat(Long
.valueOf(wordDetails[wordCounter - 1][0]));
} else {

System.out.print("extraDetails update: "
+ extraDetails[extraCounter - 1][0] + fileName);
extraDataHelper.updateDLStat(Long
.valueOf(extraDetails[extraCounter - 1][0]));
}

if (wordCounter < wordDetails.length) {
System.out.print("wordCounter: " + wordCounter + "/"
+ wordDetails.length);
startDownload(wordDetails[wordCounter][1]);
wordCounter++;
} else if (extraCounter < extraDetails.length) {
wordDLOn = false;
downloadDir = "LanH/extras";
System.out.print("extraCounter: " + extraCounter + "/"
+ extraDetails.length);
startDownload(extraDetails[extraCounter][1]);
extraCounter++;
} else {
goForward();
}
}

private void getDownloadList() {

// lessons download..........

String[] wordDetails = {"1.mp4","2.mp4","3.mp4","4.mp4","5.mp4","6.mp4","7.mp4","8.mp4",};
downloadDir = "LanH/words";


String[] extraDetails = {"a.mp4","b.mp4","c.mp4","d.mp4","e.mp4","f.mp4","g.mp4","h.mp4",};


totalFileNo = extraDetails.length + wordDetails.length;

if (wordDetails.length != 0) {
startDownload(wordDetails[wordCounter]);
wordCounter++;
} else if (extraDetails.length != 0) {
wordDLOn = false;
startDownload(extraDetails[extraCounter]);
extraCounter++;
} else {
goForward();
}

}

private void startDownload(String dlFilename) {
// tv = (TextView) findViewById(R.id.tv1);
fileName = dlFilename;
System.out.print("fileName: " + fileName);

File dir = new File(android.os.Environment
.getExternalStorageDirectory().getAbsolutePath()
+ "/"
+ downloadDir);
// creates the directory if it doesn't exists
if (dir.exists() == false) {
dir.mkdirs();
}
dir = null;

if (checkNet()) {
if (checkExternalMedia() == true) {
String url = filePath + fileName;
new DownloadFileAsync().execute(url, fileName);
mProgressDialog.setMessage("Downloading file.." + fileName);
} else {
Toast.makeText(getApplicationContext(),
"External Media is NOT readable/writable",
Toast.LENGTH_SHORT).show();
}
} else {

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("No Internet Connectivity. Check the connection and retry the app.")
.setCancelable(false)
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
finish();
}
});
AlertDialog alert = builder.create();
alert.show();
}
}


/** Method to check whether external media available and writable. */
private boolean checkExternalMedia() {
boolean stat;
String state = Environment.getExternalStorageState();

if (Environment.MEDIA_MOUNTED.equals(state)) {
// Can read and write the media
stat = true;
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
// Can only read the media
stat = false;
} else {
// Can't read or write
stat = false;
}
return stat;
}

@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case PROGRESS_DIALOG:
mProgressDialog = new ProgressDialog(this);
mProgressDialog.setMessage("Downloading file.." + fileName);
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mProgressDialog.setCancelable(false);
mProgressDialog.show();
return mProgressDialog;
default:
return null;
}
}

class DownloadFileAsync extends AsyncTask<String, String, String> {

@Override
protected void onPreExecute() {
super.onPreExecute();
showDialog(PROGRESS_DIALOG);
}

@Override
protected String doInBackground(String... aurl) {
int count;

try {
URL url = new URL(aurl[0]);
URLConnection conexion = url.openConnection();
conexion.connect();

int lenghtOfFile = conexion.getContentLength();
Log.d("DOWNLOAD_TEST", "Lenght of file: " + lenghtOfFile);

InputStream input = new BufferedInputStream(url.openStream());
OutputStream output = new FileOutputStream(
android.os.Environment.getExternalStorageDirectory()
+ "/" + downloadDir + "/" + aurl[1]);

byte data[] = new byte[1024];

long total = 0;

while ((count = input.read(data)) != -1) {
total += count;
publishProgress("" + (int) ((total * 100) / lenghtOfFile));
output.write(data, 0, count);
}

output.flush();
output.close();
input.close();
} catch (Exception e) {
}
return null;

}

protected void onProgressUpdate(String... progress) {
Log.d("DOWNLOAD_TEST", progress[0]);
mProgressDialog.setProgress(Integer.parseInt(progress[0]));
}

@Override
protected void onPostExecute(String unused) {

dismissDialog(PROGRESS_DIALOG);

// tv.append("\n\nFile Download Complete!");
// Button btn = (Button) findViewById(R.id.btn1);
// btn.setVisibility(View.GONE);

// you can call a second intent here to redirect to another screen
doNext();
}
}

private boolean checkNet() {
boolean connected = false;
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)
.getState() == NetworkInfo.State.CONNECTED
|| connectivityManager.getNetworkInfo(
ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) {
// we are connected to a network
connected = true;
} else
connected = false;
return connected;

}

@Override
public void onDestroy() {
super.onDestroy();

}
}

进程运行良好。据报告如下崩溃报告:

java.lang.IllegalArgumentException: no dialog with id 0 was ever shown via Activity#showDialog
at android.app.Activity.missingDialog(Activity.java:2663)
at android.app.Activity.dismissDialog(Activity.java:2648)
at com.langhost.main.SplashDownload$DownloadFileAsync.onPostExecute(SplashDownload.java:264)
at com.langhost.main.SplashDownload$DownloadFileAsync.onPostExecute(SplashDownload.java:1)
at android.os.AsyncTask.finish(AsyncTask.java:417)
at android.os.AsyncTask.access$300(AsyncTask.java:127)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:143)
at android.app.ActivityThread.main(ActivityThread.java:5068)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)

我的代码有什么问题? isShowing() 检查 dismissDialog 是否可以解决问题?

最佳答案

你的进度对话框真的出现了吗?
您可以尝试使用 removeDialog(PROGRESS_DIALOG); 来清理它,而不是关闭它。

关于Android IllegalArgumentException 为 dismissDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5815089/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com