如何在Android的小部件活动类中发送Bundle数据?

14 浏览
0 Comments

如何在Android的小部件活动类中发送Bundle数据?

如何在我的小部件活动类中接收来自另一个活动的捆绑数据?\n这是我发送捆绑数据的主要活动代码\n

Intent intent=new Intent(this,MyWidget.class);
    extras= new Bundle();
    extras.putString("FAJR", sfajr);
    extras.putString("ZUHR", sZuhr);
    extras.putString("ASR", sAsr);
    extras.putString("MAGRIB", sMagrib);
    extras.putString("ISHA", sIsha);
    intent.putExtras(extras);

\n但是在我的小部件活动中无法接收到我的捆绑数据?\n如何在我的小部件活动中获取数据?

0
0 Comments

原因:在Android中,当我们在widget活动类中发送Bundle数据时,需要使用Intent来传递数据。然而,在这个问题中,原始代码中使用了一个Bundle对象来传递数据,但是没有正确地将它与Intent关联起来,导致数据无法正确传递到其他活动。

解决方法:将原始代码中的Bundle对象替换为Intent,并使用putString()方法将数据放入Intent中。然后,在其他活动中,使用getIntent().getExtras()方法获取Intent的Bundle对象,并使用getString()方法从Bundle中获取数据。

以下是修改后的代码:

在widget活动类中:

Intent intent = new Intent(this, MyWidget.class);
intent.putExtra("FAJR", sfajr);
intent.putExtra("ZUHR", sZuhr);
intent.putExtra("ASR", sAsr);
intent.putExtra("MAGRIB", sMagrib);
intent.putExtra("ISHA", sIsha);

在其他活动中:

Bundle b = getIntent().getExtras();
String fajr = b.getString("FAJR");

希望这可以帮助到您。

0
0 Comments

问题的原因是在MyWidget类中无法使用getIntent().getExtras()来获取传递的Bundle数据。解决方法如下:

1. 确保在启动Widget的Activity时,使用putExtras()方法将数据放入Intent中,并使用startActivity()方法启动Activity。

2. 在MyWidget类中,使用以下代码来获取传递的Bundle数据:

AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this);
ComponentName componentName = new ComponentName(this, MyWidget.class);
int[] appWidgetIds = appWidgetManager.getAppWidgetIds(componentName);
Bundle bundle = appWidgetManager.getAppWidgetOptions(appWidgetIds[0]);
// 提取数据...
String fajr = bundle.getString("FAJR");
String zuhr = bundle.getString("ZUHR");
String asr = bundle.getString("ASR");
String magrib = bundle.getString("MAGRIB");
String isha = bundle.getString("ISHA");

通过上述方法,你可以在MyWidget类中成功获取传递的Bundle数据。

0