2011-12-14 49 views
0

我有一個包含按鈕的應用程序窗口小部件。一旦我點擊這個按鈕,它就需要一段時間才能加載。在加載的活動中,我有兩個異步任務,需要幾秒鐘才能執行。所以,我想要做的是在加載活動時啓動進度對話框頁面。從應用程序窗口小部件啓動進度對話框

由於Widget圖標被設置爲意圖在的onUpdate:

public class MyWidget extends AppWidgetProvider { 

    @Override 
    public void onEnabled(Context context) { 
     super.onEnabled(context); 
    } 

    @Override 
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 
     remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);  
     Intent messageIntent = new Intent(context, MyActivity.class); 
     messageIntent.setAction(ACTION_WIDGET_GROUP); 
    } 
} 

有沒有具體的「點擊」初始化進度對話框。另外,我還沒有參與這個活動,我正在從小部件中啓動活動。

如何以及在哪裏設置窗口小部件中的進度對話框以使其工作?進度對話框是否屬於應用程序小部件?

進度對話框不會在活動本身內啓動。那麼這樣做,但它只能在活動加載後開始:

公共類HomeActivity延伸活動{

protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.dashboard); 
    setupLayout(); 
    callAsynchronousUsers(); // asynchronous call 
     getData(); // asynchronous call 
    } 

。 。 。 }

任何和所有的幫助表示讚賞。

回答

1

那麼,你不能那樣做,唯一的方法是在中間啓動一個透明的活動,只顯示一個帶進度條的自定義對話框,然後啓動真實的活動。但不是一個優雅的解決方案,實際上它很糟糕。

我建議您立即打開您的活動,並根據您的AsyncTask顯示進度條,我認爲這是執行此操作的標準方法。這就是AsyncTask的用途,你可以從UI中獨立執行努力工作,在你的情況下,你會顯示一個消息進度條。

+0

我試過你的第二種方法,但對話框(「現在加載」)只能保持1/2秒的打開狀態,而從小部件本身啓動的活動需要幾秒鐘的時間。我將該對話框添加到從活動調用的第一個方法。以前沒有辦法啓動嗎? (除了你的第一個建議)? – user836200 2011-12-14 20:38:38

相關問題