gpt4 book ai didi

java - 从另一个 Activity 获取数据到 App Widget

转载 作者:行者123 更新时间:2023-11-30 11:51:19 25 4
gpt4 key购买 nike

您好,我有一个 Activity 1,它需要将数据发送到具有 TextView 的 Appwidget(小部件)。

为了在 Activity 之间发送数据,我知道我们可以使用 intent.putExtra("mydata", dataString);并收到与 String data = bundle.getString("mydata"); 相同的内容但就我而言,我需要将数据(字符串)发送到应用程序小部件。

当我使用

Bundle dataFromPrevious = getIntent().getExtras();
String newString = dataFromPrevious.getString("mydata");

在 AppWidgetProvider 中,它在 getIntent 中抛出一个错误,指出 getIntent 未定义类型类。

我怎样才能得到这个 AppWidget 中的字符串?此外,此文本将从 Activity 1 开始更新,经常使用新字符串,因此使用 SharedPrefrences。这种情况的好选择?还有其他办法吗?

更新 1:

正如约瑟夫所说,我已经添加了 <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />在我的 list 中,

现在我还在 AppWidget 中创建了一个 OnRecieve Override

@Override
public void onReceive(Context context, Intent intent) {

Bundle getPrevData = intent.getExtras();
String data = getPrevData.getString("mydata");
newdata = data;
super.onReceive(context, intent);
}

在我的更新中我有

views.setTextViewText(R.id.dataWidget,newdata);

这里是 newdatapublic static String但它不显示任何东西!!!当我将 TextViewText 设置为小部件中的 TextView 时。我在这里错过了什么吗?请帮助...

更新 2:

import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.widget.RemoteViews;
import android.widget.Toast;

public class MainWidget extends AppWidgetProvider {

private RemoteViews views;
public static String newdata

@Override
public void onReceive(Context context, Intent intent) {

Bundle getPrevData = intent.getExtras();
String data = getPrevData.getString("mydata");
newdata = data;

super.onReceive(context, intent);
}

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {

views = new RemoteViews(context.getPackageName(),R.layout.widget_layout);
appWidgetManager.updateAppWidget(appWidgetIds, views);

//views.setTextViewText(R.id.dataWidget,newdata);

super.onUpdate(context, appWidgetManager, appWidgetIds);
}


}

这是我发送数据的另一个 Activity :

final String text = ((TextView)findViewById(R.id.textview)).getText().toString();
Intent intent = new Intent(FirstActivity.this, MainWidget.class);
intent.putExtra("mydata", text);

最佳答案

您需要使用 BroadcastReceiver。简而言之:将 BroadcastReceiver 添加到您的 AppWidgetProvider,它作用于自定义 Intent,然后刷新您的小部件。

从你的 Activity 然后你需要做的就是发送一个带有自定义 Intent 的广播(Context.sendBroadcast)(你可以将数据添加到 IntentputExtra 照常)。

关于java - 从另一个 Activity 获取数据到 App Widget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7540970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com