如何在android编程中获取放置在小部件上的textview文本
Posted
技术标签:
【中文标题】如何在android编程中获取放置在小部件上的textview文本【英文标题】:how can get text of textview that placed on a widget in android programming 【发布时间】:2012-04-02 15:20:29 【问题描述】:我有一个问题。我以前做过所有的事情来设计和编码一个小部件。现在我的小部件中有一个按钮和一个文本视图。我想当我点击我的按钮时,我在 textview 中输入的文本作为意图的额外内容,然后开始该意图。我可以用以下代码做到这一点:
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds)
super.onUpdate(context, appWidgetManager, appWidgetIds);
for (int i=0;i<appWidgetIds.length;i++)
int awID=appWidgetIds[i];
RemoteViews v=new RemoteViews(context.getPackageName(),R.layout.widgetshow);
.
.
.
Intent in = new Intent("my.app.NOTEEDITOR");
Bundle basket = new Bundle();
*/100*/ basket.putString("textViewText", "test");
in.putExtras(basket);
PendingIntent pi = PendingIntent.getActivity(context, 0, in, 0);
v.setOnClickPendingIntent(R.id.button, pi);
appWidgetManager.updateAppWidget(awID, v);
.
.
.
但在标记为 /100/ 的行中,我想将我的 textviews 文本作为额外的。我希望当我单击小部件中的按钮时,该小部件启动一个活动,其中包含额外包含的 textview 文本放置在我单击它的按钮的小部件上。
对不起,伙计们,我的英语口语很糟糕
【问题讨论】:
get text of a TextView in android home widget (not in activity)?的可能重复 【参考方案1】:您不需要在小部件中获取 TextView 的文本。为什么?因为 TextView 的文本会在另一个地方发生变化,然后这些变化将应用于小部件。 例如,用户可以更改活动中的文本。为了在小部件中显示新文本,您可以将其保存在 SharedPreferences 中并在您的小部件中获取它。
Refer to here for more details.
【讨论】:
感谢您的回答。但是您的参考与我的问题无关。我在小部件中我现在不知道 textview 的文本是什么,然后将额外和下一个放入意图中。我的 textof textview 是动态的,此时我不知道小部件上的 textview 中显示了什么 我必须从 textview 中获取文本,然后将其放入意图中 我认为你错了。 TextView 中的文本来自其他地方。你怎么不知道小部件上的文字?在我之前看到的所有小部件中,文本在 Activity 中更改,然后应用到小部件。【参考方案2】:我和你有同样的问题。而像 aTa 这样的人并不知道我所期望的究竟是什么。我建议您可以使用 sharedPreference 来保存放置在您的 android 主页小部件上的 TextView 的数据,然后您的活动从中获取数据。这是作弊
【讨论】:
【参考方案3】:更新您的代码:
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds)
super.onUpdate(context, appWidgetManager, appWidgetIds);
for (int i=0;i<appWidgetIds.length;i++)
int awID=appWidgetIds[i];
RemoteViews v=new RemoteViews(context.getPackageName(),R.layout.widgetshow);
Intent in = new Intent(paramContext, Caller2.class); ///Activity name Caller2.class you want to start
Bundle basket = new Bundle();
TextView txt=(TextView)findViewbyId(R.id.txtid);
String test = tx.getText().toString();
basket.putString("textViewText", test);
in.putExtras(basket);
PendingIntent pi = PendingIntent.getActivity(context, 0, in, 0);
v.setOnClickPendingIntent(R.id.button, pi);
appWidgetManager.updateAppWidget(awID, v);
如需更多帮助,请参阅Widget is clicked
【讨论】:
tnx imrankhan。我以前使用过这段代码,但是当我使用 findViewById 时,它没有检测到这个方法!以上是关于如何在android编程中获取放置在小部件上的textview文本的主要内容,如果未能解决你的问题,请参考以下文章