我在AppWidgetProvider
课程中关注了代码:
@Override
public void onUpdate(
....
Intent mainIntent = new Intent(ctxt, MainActivity.class);
mainIntent.putExtra("testExtra",true);
PendingIntent pendingIntent = PendingIntent.getActivity(ctxt, 0, mainIntent, 0);
widget.setOnClickPendingIntent(R.id.buttonAddwidget, pendingIntent);
...
此代码将仅启动主Activity,但我想从主要活动中调用test()
函数
我该怎么办?
我正在尝试使用getExtra
,但它无效。
答案 0 :(得分:1)
为什么不使用putExtra
向事件添加一些数据 - 可能是布尔标志或其他东西。
然后在onCreate()
中,您可以检查意图中是否存在数据(您可以使用getIntent()
访问),并调用函数(如果它在那里)。
修改强>
使用您在上面提供的更新代码(附加内容),您需要在onResume
内的MainActivity.class
功能中使用以下内容。
if (getIntent().getBooleanExtra("textExtra"))
doSomeFunction();
getIntent()
应该给你调用意图。如果这不起作用,则可能与您的活动的launchMode
设置有关,您可能必须覆盖onNewIntent()
方法才能获得意图。
编辑2
尝试将以下代码添加到您的活动中。它的作用是处理意图未创建活动的时间,因此getIntent()
将返回用于首先创建活动的意图而不是新活动(包含附加内容) 。它将意图设置为新意图,以便在onResume()
中您可以访问该额外内容。
@Override
protected void onNewIntent(Intent intent) {
//called when the activity is relaunched by a new intent
setIntent(intent);
super.onNewIntent(intent);
}