1

銀行口座にログインして、口座残高を取得しています。ウィジェットのonUpdateからこの関数を呼び出し、AsyncTaskで実行しています

package com.example.oobe.widget.widgetexample;
public class ExampleAppWidgetProvider extends AppWidgetProvider 
{
    (...)

    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[]  appWidgetIds) 
    {
        (...)
        if (notFromAsyncTask)
            new MyAsyncTask().execute(context);
        (...)
    }
    (...)
}

onPostExecuteメソッドで、onUpdateウィジェットとputExtra文字列を呼び出します。これどうやってするの?

package com.example.oobe.widget.widgetexample;
public class MyAsyncTask extends AsyncTask<Object, Void, BGZ> 
{
    Context context;

    @Override
    protected BGZ doInBackground(Object... params) 
    {
        this.context = (Context)params[0];
        return GetSomething();
    }

    protected void onPostExecute(BGZ page)
    {
        Intent intent = new Intent(context, ExampleAppWidgetProvider.class);
        intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
        intent.putExtra("result", result);
        intent.putExtra("webpage", webPage);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);
    }
    (...)
}

上記のようにすると、エラーが発生します:..明示的なアクティビティクラスが見つかりません。

AsyncTaskからこれを行うことはできますか?paramsを指定してwidget_update(onUpdate)を呼び出して、AsyncTaskからのものであることを認識できますか?サンプルコードを少し教えてください(broadcastreceiverなどである必要がある場合にマニフェストに追加するもの)。

onPostExecuteでウィジェットを更新しましたが、ExampleAppWidgetProviderクラスで更新する方が良い方法だと思いますか?

4

1 に答える 1

0

このエラーが発生した場合

明示的なアクティビティ クラスが見つかりません..

この線が原因かもしれません

Intent intent = new Intent(context, ExampleAppWidgetProvider.class); 

ExampleAppWidgetProvider.class が存在することを確認し、

Context context = Activity.this;

また

Intent intent = new Intent(Activity.this, ExampleAppWidgetProvider.class); 

アップデート

public class ExampleAppWidgetProvider extends AppWidgetProvider 
{

   //your code .......
//asynctask as an inner class
   public class MyAsyncTask extends AsyncTask<Object, Void, BGZ> 
{
  doInBackground(){}
onPreExecute(){}
onPostExecute(){

//save result 
// or call your methods you need to run after your async call
}
}

}
于 2012-08-21T17:47:25.920 に答える