2

我刚开始使用 android home 小部件进行编程,所以我可以通过 settextviewtext() 从我的小部件提供程序将文本设置为 home 小部件中的 textview,但是当我想从中获取文本时,我没有理想。不能像在活动中一样正常使用 findViewById(),然后使用 getText()。有没有办法从小部件提供者那里获取主页小部件中的 textview 文本?或者告诉我如何从另一个活动中获得?

4

3 回答 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
  1. 在您实例化 App Widget 布局和显示的地方,请编写以下代码:

     SharedPreferences settings = 
     PreferenceManager.getDefaultSharedPreferences(context);
     @SuppressLint("CommitPrefEdits")
     SharedPreferences.Editor  editor = settings.edit();
     String rowid = "500"; 
     editor.putString("appWidgetRowId", rowid);
     editor.apply();
    
  2. 然后得到那个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 回答