如何从 Activity 中获取 Widget 的 TextView 的文本?
Posted
技术标签:
【中文标题】如何从 Activity 中获取 Widget 的 TextView 的文本?【英文标题】:How to get text of a TextView of a Widget from an Activity? 【发布时间】:2012-03-21 11:32:57 【问题描述】:我有一个小部件和一个活动,当我启动活动时,我必须从小部件的 TextView 中读取文本并将其显示在活动的 TextWidget 中。
我的相关代码:
String frase="";
TextView text_frase = (TextView) findViewById(R.id.widget_textview_frase);
if (text_frase != null)
frase = (String) text_frase.getText();
Log.v(LOG_CLASS_NAME, "frase: "+frase);
调试它 - 我将 text_frase
设为 null(我认为我无法从另一个视图引用视图对象。)无论如何,我该怎么做?
【问题讨论】:
你是从activity 1调用activity2吗?如果是,你需要在bundle中传递它 谢谢...但是您所说的activity1是一个小部件...我准备了一个未决的意图...所以我不能。而且...我需要获取有关活动开始的内容。 【参考方案1】:不,你不能。我建议其中一种方式:
-
将您的文本添加到 Bundle 并在您的 Activity 中获取它。
在您的小部件中:
Intent intent = new Intent(context, YourActivity.class);
Bundle b= new Bundle();
b.putString("Text", yourtext);
intent.putExtras(b);
PendingIntent pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_CANCEL_CURRENT);
在你的活动中:
Intent intent=getIntent();
Bundle b= intent.getExtras();
String text= b.getString("Text", "");
-
使用 SharedPreferences 保存您的文本并将其加载到活动中。
在你的情况下,我推荐方法1。
【讨论】:
太棒了...我认为 sharedPreferences 是最好的方法...第一个不好,因为我有一个更新 TextView 内容的服务。【参考方案2】:您可能希望通过使用 TextView 上的 .toString() 方法来获取实际的字符串。
String frase;
TextView text_frase = (TextView) findViewById(R.id.widget_textview_frase);
if (text_frase.getText().toString() != null)
frase = (String) text_frase.getText().toString();
Log.v(LOG_CLASS_NAME, "frase: "+frase);
【讨论】:
谢谢...但是名为 text_frase 的 TextView 为空...(正如我在答案中所写...)我想我找不到使用 Activity 中的 findViewById 的小部件。以上是关于如何从 Activity 中获取 Widget 的 TextView 的文本?的主要内容,如果未能解决你的问题,请参考以下文章
如何从Fragment到DataBinding访问Activity视图?
Flutter Bloc 如何从 Widget 本身更新 BlocBuilder 中的 Widget?
android 程序 如何从一个ACTIVITY跳转到另一个ACTIVITY,我的两个activity都在manifest上定义过的