如何在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文本的主要内容,如果未能解决你的问题,请参考以下文章

Android在小部件内获取textView值

AppWidgetProvider:在小部件放置时未调用 onAppWidgetOptionsChanged

如何迭代对象列表并使用颤振在小部件中获取它们的属性?

除了 setstate 颤振之外,如何在小部件构建中获取值

如何从 JSON 数据中获取列表以显示在小部件中?

如何在小部件中添加垂直滚动条?