2

ウィジェットを押すと更新されるウィジェットがありますが、ウィジェットの更新中にプログレス ホイールを表示したいと思います。

//remove text      
        updateViews.setViewVisibility(R.id.widget_textview, View.GONE);
        updateViews.setViewVisibility(R.id.widget_dkk, View.GONE);

// show progress wheel

updateViews.setViewVisibility(R.id.widget_Pross, View.VISIBLE);



// task that take time are locatet here a GetHTTP function



//Show text again       
        updateViews.setViewVisibility(R.id.widget_textview, View.VISIBLE);
        updateViews.setViewVisibility(R.id.widget_dkk, View.VISIBLE);

// Remove progress wheel

   updateViews.setViewVisibility(R.id.widget_Pross, View.GONE);

これはすべて、私のウィジェット更新クラスでこれを見つけます:

public static RemoteViews buildUpdate(Context context) {

しかし、プログレス ホイールは表示されません。これは、ウィジェットが 1 回しか更新されないため、GetHttp での計算中にプログレス ホイールが表示されないようなものです。

編集:

// Remove rext and show progress wheel
    updateViews.setViewVisibility(R.id.widget_textview, View.GONE);
        updateViews.setViewVisibility(R.id.widget_dkk, View.GONE);
        updateViews.setViewVisibility(R.id.widget_Pross, View.VISIBLE);

    ComponentName thisWidget = new ComponentName(context, SaldoWidget.class);
    AppWidgetManager manager = AppWidgetManager.getInstance(context);
    manager.updateAppWidget(thisWidget, updateViews);


//    GetHttp code here / long computing task her

 //Show text and remove progress wheel 
 updateViews.setViewVisibility(R.id.widget_textview, View.VISIBLE);
            updateViews.setViewVisibility(R.id.widget_dkk, View.VISIBLE);
            updateViews.setViewVisibility(R.id.widget_Pross, View.GONE);
            manager.updateAppWidget(thisWidget, updateViews);
4

1 に答える 1

3

AppWidgetManager.updateAppWidget()レイアウトを変更するたびに呼び出す必要があります。

つまり、元のウィジェット ビューを非表示にして、プログレスバーをRemoteViews. その後、呼び出しupdateAppWidget()てレイアウトを変更し、プログレスバーを表示します。次に、downloadtask を実行します。その後、取得したデータをビューに入力し、進行状況インジケーターを非表示にし、updateAppWidget()再度呼び出して通常のレイアウトに戻します。

この名前RemoteViewsは、最初は少し混乱するかもしれません。実際には、Viewsアプリからリモートで制御できるものは多くありません。これは、必要に応じて構築し、それを AppWidgetManager に渡して公開するビューのグループです。

于 2011-08-28T20:39:56.143 に答える