我正在登录银行帐户并获取帐户余额。 我从小部件中的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吗? 请给我一些示例代码(如果必须是广播接收器,则添加到清单中的内容等等)。
我在onPostExecute中更新了widget,但我认为更好的方法是在ExampleAppWidgetProvider类中做到这一点?
答案 0 :(得分: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
}
}
}