我在 onUpdate() 方法中初始化一个变量,然后调用 onReceive() 函数,该函数运行良好,但无法访问 onUpdate() 方法中设置的变量。这是为什么?这些变量是字符串变量并且被声明为公共的。我错过了什么吗?
public class WidgetTest extends AppWidgetProvider {
public static String ACTION_WIDGET_RECEIVER = "ActionReceiverWidget";
public String state;
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
{
Log.e("UPDATE", "Start");
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);
state="State_update"
System.out.println(state);// My variable is initilised
Intent active = new Intent(context, WidgetTest.class);
active.setAction(ACTION_WIDGET_RECEIVER);
PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context, 0, active, 0);
remoteViews.setOnClickPendingIntent(R.id.buttonclick, actionPendingIntent);
super.onUpdate(context, appWidgetManager, appWidgetIds);
appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
Log.e("UPDATE", "End");
}
@Override
public void onReceive(Context context, Intent intent)
{
super.onReceive(context, intent);
Log.e("RECEIVE", "Start 2");
if (intent.getAction().equals(ACTION_WIDGET_RECEIVER))
{
Log.e("Test", "My State is "state);//it gives me null point exception;
}
Log.e("RECEIVE", "End");
}
onReceive 中的状态变量给出空指针异常
for a AppWidgetReceiver
, 第一的onReceive()
将被调用,然后根据收到的操作,它将调用onUpdate(...)
方法。所以这里你在 onUpdate() 中初始化状态,它将在 onReceive() 之后调用,因此状态是null在 onReceive() 中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)