嗨我有一个活动1需要发送数据到Appwidget(小部件),它有一个文本视图。从另一个活动获取数据到App Widget
要发送activites我知道,我们可以使用intent.putExtra("mydata", dataString);
和recive同样与String data = bundle.getString("mydata");
但在我来说,我需要发送数据(字符串)到App小部件之间的数据。
当我使用
Bundle dataFromPrevious = getIntent().getExtras();
String newString = dataFromPrevious.getString("mydata");
内部的AppWidgetProvider它抛出在getIntent说getIntent是未定义的类型类的错误。
我怎样才能得到这个AppWidget内的字符串?此外,这段文字将从活动1更新为新字符串,因此使用SharedPrefrences
是这种情况的不错选择?有没有其他方法?
更新1:
正如约瑟夫所说,我已经加入我的清单 <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
,
现在我也有在AppWidget
创建OnRecieve覆盖@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);
这里newdata
是public static String
但它不显示任何东西!当我setTextViewText到小部件的文本视图。我在这里错过了什么吗?请帮助...
更新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);
}
}
这是我的另一个activityvthat发送数据:
final String text = ((TextView)findViewById(R.id.textview)).getText().toString();
Intent intent = new Intent(FirstActivity.this, MainWidget.class);
intent.putExtra("mydata", text);
如若线'字符串数据= getVerseData.getString( “MYDATA”);'不'字符串数据= getPrevData.getString( “MYDATA”);'代替? –
此外,如果您可以发布您用来发送广播的代码,以防万一出现问题。 –
你好,我打错了堆栈溢出,对不起我的错误!更多参考资料,我会用我的完整代码进行第二次更新。 – Wesley