【问题标题】:My Dialog.show() not work我的 Dialog.show() 不起作用
【发布时间】:2012-12-07 02:23:22
【问题描述】:

我在调用 MainActivity 时正在制作加载效果。我不知道为什么我的 Dialog.show 不能在 AsyncTask 中工作。我只看到它关闭的那一刻,但在此之前从未出现过对话框。 谢谢。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    new LoadViewTask().execute(); 
    setContentView(R.layout.activity_main);
....}



private class LoadViewTask extends AsyncTask<Void, Integer, Void>
{
    @Override
    protected void onPreExecute() { 
        progressDialog = ProgressDialog.show(MainActivity.this,"Loading...","Loading application View, please wait...", false, false);  

    }

    @Override
    protected Void doInBackground(Void... params) 
    {
        try 
        {
            synchronized (this) 
            {
                int counter = 0;
                while(counter <= 4)
                {
                    this.wait(1000);
                                            counter++;
                    publishProgress(counter*25);
                }
            }
        } 
        catch (InterruptedException e) 
        {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onProgressUpdate(Integer... values) 
    {
        progressDialog.setProgress(values[0]);
    }

    @Override
    protected void onPostExecute(Void result) 
    {
        progressDialog.dismiss();
    }


}

【问题讨论】:

  • 您的代码正在运行,我这边可以发布您的完整活动代码。

标签: android android-layout android-asynctask progressdialog


【解决方案1】:

您应该使用 FragmentDialogs 在 Android 中使用对话框。

这里解释得很好:

http://developer.android.com/intl/es/reference/android/app/DialogFragment.html

【讨论】:

    【解决方案2】:

    尝试在开始异步任务之前设置内容视图:

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Set the content view first
        setContentView(R.layout.activity_main);
        new LoadViewTask().execute(); 
    ....}
    

    【讨论】:

    • @DannyHo 我已经在我的 Android 2.3.3 和 Android 4.1.2 设备上测试了您的代码,并且对话框在两个设备上都正确出现和消失了。您能否提供更多详细信息,也可能是您的MainActivity 的完整代码?
    • 实际上我测试过它可以在 Android 2.3.3 但不是 4.1.2 上正常工作。我的 mainactivity 中的提醒代码是一个 HttpPostHandler ,你认为问题是由这个引起的吗?
    • @DannyHo 在看到实际代码之前,我无法做出疯狂的猜测,抱歉 :)
    • 哦,我想我误解了一些东西,我应该把httprequest放在Asynctask的DoInBackground而不是Oncreate吗???
    猜你喜欢
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 2013-04-21
    • 2013-01-11
    • 2012-07-23
    • 2012-03-13
    • 2015-11-03
    相关资源
    最近更新 更多