Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.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
Java Android-进度操作对话框退出_Java_Android_Progressdialog - Fatal编程技术网

Java Android-进度操作对话框退出

Java Android-进度操作对话框退出,java,android,progressdialog,Java,Android,Progressdialog,我正试着为我的手机编写一个非常基本的应用程序,只是为了让自己回到编程的轨道上来。我已经有了我想要做的框架和基本知识,我只需要在一个小部分上得到帮助,这让我很痛苦 在我的应用程序上,我有一个按钮。当按下该按钮时,我希望应用程序将一段文本更改为“Decision…”,弹出一个不确定的进度条一两秒钟,然后退出,然后打印另一个活动的结果,但只有在对话框退出后。我现在正在使用一个线程,但是我不能让它正常工作 有人知道如何让它以我想要的方式工作吗 以下是我的活动文件源: package com.bassio

我正试着为我的手机编写一个非常基本的应用程序,只是为了让自己回到编程的轨道上来。我已经有了我想要做的框架和基本知识,我只需要在一个小部分上得到帮助,这让我很痛苦

在我的应用程序上,我有一个按钮。当按下该按钮时,我希望应用程序将一段文本更改为“Decision…”,弹出一个不确定的进度条一两秒钟,然后退出,然后打印另一个活动的结果,但只有在对话框退出后。我现在正在使用一个线程,但是我不能让它正常工作

有人知道如何让它以我想要的方式工作吗

以下是我的活动文件源:

package com.bassios.decisionengine;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class DecisionEngineActivity extends Activity {

private ProgressDialog progressDialog;
public String decision;

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

}

public void decide(View view) {
    TextView tv = (TextView) findViewById(R.id.Decision1);
    tv.setText("Deciding...");
    int a = generate();
    decision = decision(a);
    runDialog(1);
//        alterText();
}

public void alterText() {
    TextView tv = (TextView) findViewById(R.id.Decision1);
    tv.setText(decision);
}

private void runDialog(final int seconds) {
    progressDialog = ProgressDialog.show(this, "Please wait...", "Deciding...");
    new Thread(new Runnable() {

        public void run() {
            try {
                Thread.sleep(seconds * 1000);
                progressDialog.dismiss();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }).start();
}

public static int generate() {
    int a = (int) (Math.random() * 10) + 1;
    return a;
}

public static String decision(int a) {
    String decision = null;
    switch (a) {
        case 1:
            decision = "Yes";
            break;
        case 2:
            decision = "No";
            break;
        case 3:
            decision = "Yes";
            break;
        case 4:
            decision = "No";
            break;
        case 5:
            decision = "Yes";
            break;
        case 6:
            decision = "No";
            break;
        case 7:
            decision = "Yes";
            break;
        case 8:
            decision = "No";
            break;
        case 9:
            decision = "Yes";
            break;
        case 10:
            decision = "No";
            break;
    }
    return decision;
    }
}
谢谢

使用异步任务

例如:

更新:

首先,必须像这样声明类:

private class DecideTask extends AsyncTask<Void, Void, Boolean>
{
...
}
删除/取消对话框(在
onPostExecute
中):

声明三种方法中的每一种:

protected Boolean doInBackground(Void... params)

protected void onPreExecute()

protected void onPostExecute(Boolean result)
应该可以了。

使用AsyncTask

例如:

更新:

首先,必须像这样声明类:

private class DecideTask extends AsyncTask<Void, Void, Boolean>
{
...
}
删除/取消对话框(在
onPostExecute
中):

声明三种方法中的每一种:

protected Boolean doInBackground(Void... params)

protected void onPreExecute()

protected void onPostExecute(Boolean result)

应该可以。

尝试使用
AsyncTask
而不是
Thread
,您无法从另一个
线程更改UI的状态
尝试使用
AsyncTask
而不是
Thread
,您无法从另一个
线程更改UI的状态
,我正在尝试使用该示例,但当我粘贴它以使其适合时,我得到了这样的结果:com.bassios.decisionengine.decisionengineacitivity.decisiontask不是抽象的,也不会覆盖抽象方法doInBackground(java.lang.Object…)在android.os.asynctask中,我把它放在了PasteBin上,因为它太长了,无法放在这里的注释中:如果不取消doInBackground方法上方的重写注释,会发生什么呢?不管怎样,我仍然会得到相同的错误。取消对@Override的注释会给我“方法不会重写或实现超类型中的方法”的回复太晚了,我昨天出去了。我已经让它的大部分工作了,但对话框不工作。我在progressDialog=progressDialog.show(…)上收到一条巨大的错误消息;现在排队。我已经上传了错误信息作为你的截图,它太大了,无法打印出来。编辑:我应该提到,我正在使用NetBeans开发,因为Eclipse无法工作(它找不到我的jvm)。我不知道这是否有什么区别。我试图使用这个例子,但当我粘贴它以使其适合时,我得到了这样的结果:com.bassios.decisionengine.DecisionEngineActivity.decisiontask不是抽象的,也不会覆盖抽象方法doInBackground(java.lang.Object…)在android.os.asynctask中,我把它放在了PasteBin上,因为它太长了,无法放在这里的注释中:如果不取消doInBackground方法上方的重写注释,会发生什么呢?不管怎样,我仍然会得到相同的错误。取消对@Override的注释会给我“方法不会重写或实现超类型中的方法”的回复太晚了,我昨天出去了。我已经让它的大部分工作了,但对话框不工作。我在progressDialog=progressDialog.show(…)上收到一条巨大的错误消息;现在排队。我已经上传了错误信息作为你的截图,它太大了,无法打印出来。编辑:我应该提到,我正在使用NetBeans开发,因为Eclipse无法工作(它找不到我的jvm)。我不知道这是否有什么区别。