我刚开始使用 android home 小部件进行编程,所以我可以通过 settextviewtext() 从我的小部件提供程序将文本设置为 home 小部件中的 textview,但是当我想从中获取文本时,我没有理想。不能像在活动中一样正常使用 findViewById(),然后使用 getText()。有没有办法从小部件提供者那里获取主页小部件中的 textview 文本?或者告诉我如何从另一个活动中获得?
问问题
2360 次
3 回答
7
CommonsWare
在这个问题中说:
你不能。应用小部件是只写的:您可以向它们推送数据,但不能读取它们。
相反,当您使用新文本更新应用小部件时,您需要将该文本存储在某个地方,也许是在一个文件中。
于 2012-06-28T03:33:47.790 回答
0
read this for widget tutorial and what you can do with it.
于 2012-06-28T02:14:31.150 回答
0
在您实例化 App Widget 布局和显示的地方,请编写以下代码:
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); @SuppressLint("CommitPrefEdits") SharedPreferences.Editor editor = settings.edit(); String rowid = "500"; editor.putString("appWidgetRowId", rowid); editor.apply();
然后得到那个rowid(意思是500),在AppWidgetProvider中写下这个:
@Override public void onReceive(final Context context, Intent intent) { super.onReceive(context, intent); SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); @SuppressLint("CommitPrefEdits") SharedPreferences.Editor editor = settings.edit(); final String rowId= settings.getString("appWidgetRowId", null); Toast toast = Toast.makeText(context, "Opening.... "+rowId, Toast.LENGTH_SHORT); toast.setGravity(Gravity.CENTER|Gravity.BOTTOM, 0, 0); toast.show(); }
您可以在小部件单击选项上调用第二种方法。
于 2021-06-19T11:21:58.777 回答