java - 线程完成后出现 ProgressDialog

标签 java android progressdialog

我有以下三个类:

当我尝试在 WorkingThread 运行时显示 progressDialog 时,ProgressDialog 仅在 WorkingThread 完成后显示。我做错了什么?

我对使用 AsyncTask 不感兴趣!

-启动 Activity :

public class StartActivity extends Activity implements OnClickListener
{
    public ProgressDialog pgd;

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

        imgv = (ImageView)findViewById(R.id.imageView1);
        tv = (TextView)findViewById(R.id.textview);

        Button btn = (Button)findViewById(R.id.button1);
        btn.setOnClickListener(this);
    }

    public void onClick(View v) 
    {
        pgd = ProgressDialog.show(StartActivity.this, "", "Loading picture"); // Start ProgressDialog before starting activity

        Intent ActivityIntent = new Intent(this, FirstActivity.class);
        startActivityForResult(ActivityIntent, 0);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == 0 && resultCode == RESULT_OK)
        {
            pgd.dismiss(); //Stop ProgressDialog when FirstActivity is "done"
        }
    }
}

-

-FirstActivity:

public class FirstActivity extends Activity
{
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);

        WorkingThread wt = new WorkingThread();
        wt.start();

        try 
        {
            wt.join();
            Intent ActivityIntent = getIntent();
            setResult(RESULT_OK, ActivityIntent);
            finish();
        } 
        catch (Exception e) 
        {
        }
    }
}

-工作线程:

public class WorkingThread extends Thread 
{

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

        try
        {
            Thread.sleep(5000);
        }
        catch (Exception e)
        {
        }
    }
}

最佳答案

问题是 ProgressDialog 总是需要current Activity context 来显示。但是在你的情况下 ProgressDialog 有点不幸

原因是一旦你触发 ProgressDialog,接下来的几行从当前 Activity 中取出上下文并启动下一个 Activity ,即 FirstActivity。所以你的 progressDialog 没有机会在屏幕上显示自己。

关于java - 线程完成后出现 ProgressDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11244013/

相关文章:

java - 'canonical table' 是什么?

java - 是否有可以可靠地生成 XHTML 1.0 Strict 的 Java Web 框架?

java - 从 Android 首选项设置铃声不起作用

android - 在主线程中处理某些代码时如何显示进度对话框(在单独的线程中?)

IOS 进度对话框

java - 使用不同的格式/模式解析迄今为止的字符串

java - 将 JPopupMenu 添加到 TrayIcon

Android Studio 金丝雀 2.4 错误

android - 测试字段是否为空并阻止用户保存到 sqlite - android

android - ProgressDialog 在执行任务时不显示