如何通过意图将数据从窗口小部件配置类传递到窗口小部件提供程序类?

PGMacDesign

我不会删除此问题,因为公用之处在下面提出了一些要点,但是我确实对代码进行了修改,并在此处以不同的方式提出了问题:如何在Widget Service类中检索共享的首选项数据,而不传递错误的默认值或获取空指针错误?

我正在开发一个需要用户输入选择并将其传递给小部件的应用程序。它当前正在运行一项服务来对其进行管理,并且运行良好,但是我无法弄清楚如何有效地将String从一个传递到另一个。到目前为止,这是我的代码:

        //First Widget config is called:
        public class WidgetConfig extends Activity{

            //Stuff happens here to get data from EditTexts and spinners and converts 
            //them to strings.
            //Eventually a button is pressed which enters all the information:

            public void onClick(View v) {
                //I have already tried shared preferences like this:
                //This was intended to give the shared preferences a unique identifier.
                //It does not work for what I am trying to do
                String str = Integer.toString(appWidgetId); 
                sp.putString(editor, str + "::" + "username", user_name);
                //The appWidgetID was unique and so I thought it would work as an
                //identifier for shared prefs.

                //This is the intent for opening the provider
                Intent intentUpdate = new Intent(context, MailWidgetProvider.class); 

                //I also attempted to put items here:
                intentUpdate.putExtra("username", user_name);

                //I left out the rest of the pending update code as it is irrelevant to this.
            }
        }


        //Next the AppWidgetProvider is called
        public class MailWidgetProvider extends AppWidgetProvider {

            public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
                                  int[] appWidgetIds) {

                ComponentName thisWidget = new ComponentName(context, 
                                       MailWidgetProvider.class);
                int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);

                //This is the intent to open up and run the service
                Intent intent = new Intent(context.getApplicationContext(),                            
                                            MailWidgetUpdateService.class);

                intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, allWidgetIds);

                context.startService(intent);
            }

        }

    //Service Class
    public class MailWidgetUpdateService extends Service {
        public void onStart(Intent intent, int startId) {
                AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this
                        .getApplicationContext());

                int[] allWidgetIds = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS);

                ComponentName thisWidget = new ComponentName(getApplicationContext(),
                        MailWidgetProvider.class);

                int[] allWidgetIds2 = appWidgetManager.getAppWidgetIds(thisWidget);

                //Loop through the IDs
                for (int widgetId : allWidgetIds) {

                    int awid = widgetId;
                    String str = Integer.toString(widgetId);

                    String user_name = sp.getString(settings, str + "::" + "chosen_accout_string", "Loading...");
                    Log.d(TRACKING_USERNAME, user_name);

                    /*
                    Issue Here, see explanation below
                    */
     }
}
常用软件

如何从小部件配置类中检索小部件提供程序类中的额外内容,以及如何在收到它们后将其传递给服务?

您首先不做任何事情。

AppWidgetProvider仅仅是更新应用程序小部件内容的一种方法,一种将在添加应用程序小部件时以及在应用程序小部件元数据请求进行定期更新时由Android专门使用的一种方法。此外,请记住,您的实例AppWidgetProvider仅使用一次,然后被丢弃。

如果您想在其他地方更新您的应用程序小部件,请通过创建RemoteViews并将其赋予来更新应用程序小部件AppWidgetManagerAppWidgetProvider与它无关。引用文档

当应用程序小部件使用配置活动时,活动负责在配置完成后更新应用程序小部件。您可以通过直接从AppWidgetManager请求更新来实现。

如果您希望有一个update-the-app-widget逻辑的通用实现,请把该通用类用于您的configuration Activity,yourAppWidgetProvider以及需要更新应用程序小部件内容的任何其他类。

因此,当用户通过活动配置应用程序小部件时,您需要:

  • 通过AppWidgetManager自己更新应用程序小部件

  • 保留配置数据(在数据库,SharedPreferences或其他类型的文件中),以便可以将其用于将来的更新

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何通过意图将数据从小部件配置类传递到小部件提供程序类?

来自分类Dev

如何调用窗口小部件类框架并将其打包到主窗口应用程序类中?Tkinter

来自分类Dev

如何从自定义窗口小部件类更改中央窗口小部件?

来自分类Dev

窗口小部件依赖类Python TKinter

来自分类Dev

如何创建窗口小部件(按钮)的派生类

来自分类Dev

如何添加应用程序小部件提供程序类

来自分类Dev

如何在类构造函数参数中动态传递窗口小部件

来自分类Dev

如何从父窗口小部件更改一个子窗口小部件的状态,而子窗口小部件是单独文件中的单独类?

来自分类Dev

使用Android窗口小部件将意图从主屏幕传递到另一个Java文件

来自分类Dev

窗口小部件挂起的意图未更新

来自分类Dev

如何通过仅输入同一个窗口小部件来将文本输入到两个文本窗口小部件中

来自分类Dev

将函数传递给窗口小部件工厂窗口小部件,而不执行它

来自分类Dev

如何将数据从一个小部件传递到其同级小部件?

来自分类Dev

窗口小部件提供程序中的服务为空

来自分类Dev

如何通过android SearchView小部件查询提交通过意图启动新活动

来自分类Dev

Python Tkinter框架窗口小部件选项(可视和类)

来自分类Dev

在我需要窗口小部件中编译类

来自分类Dev

如何从另一个对话框类访问窗口小部件类

来自分类Dev

如何从另一个对话框类访问窗口小部件类

来自分类Dev

QTest无法将事件传递给子窗口小部件

来自分类Dev

QTest无法将事件传递给子窗口小部件

来自分类Dev

Android窗口小部件配置打开活动

来自分类Dev

将属性从类传递到其状态类并在 Text 小部件中使用它

来自分类Dev

如何在窗口小部件提供程序的onReceive方法中更新TextView

来自分类Dev

Rss窗口小部件:数据不可显示

来自分类Dev

使用指令将窗口小部件集成到有角度的应用程序中

来自分类Dev

使用QFileDialog类时如何避免父窗口小部件警告?

来自分类Dev

QT C ++-如何在另一个类中引用窗口小部件

来自分类Dev

指定小部件的类

Related 相关文章

  1. 1

    如何通过意图将数据从小部件配置类传递到小部件提供程序类?

  2. 2

    如何调用窗口小部件类框架并将其打包到主窗口应用程序类中?Tkinter

  3. 3

    如何从自定义窗口小部件类更改中央窗口小部件?

  4. 4

    窗口小部件依赖类Python TKinter

  5. 5

    如何创建窗口小部件(按钮)的派生类

  6. 6

    如何添加应用程序小部件提供程序类

  7. 7

    如何在类构造函数参数中动态传递窗口小部件

  8. 8

    如何从父窗口小部件更改一个子窗口小部件的状态,而子窗口小部件是单独文件中的单独类?

  9. 9

    使用Android窗口小部件将意图从主屏幕传递到另一个Java文件

  10. 10

    窗口小部件挂起的意图未更新

  11. 11

    如何通过仅输入同一个窗口小部件来将文本输入到两个文本窗口小部件中

  12. 12

    将函数传递给窗口小部件工厂窗口小部件,而不执行它

  13. 13

    如何将数据从一个小部件传递到其同级小部件?

  14. 14

    窗口小部件提供程序中的服务为空

  15. 15

    如何通过android SearchView小部件查询提交通过意图启动新活动

  16. 16

    Python Tkinter框架窗口小部件选项(可视和类)

  17. 17

    在我需要窗口小部件中编译类

  18. 18

    如何从另一个对话框类访问窗口小部件类

  19. 19

    如何从另一个对话框类访问窗口小部件类

  20. 20

    QTest无法将事件传递给子窗口小部件

  21. 21

    QTest无法将事件传递给子窗口小部件

  22. 22

    Android窗口小部件配置打开活动

  23. 23

    将属性从类传递到其状态类并在 Text 小部件中使用它

  24. 24

    如何在窗口小部件提供程序的onReceive方法中更新TextView

  25. 25

    Rss窗口小部件:数据不可显示

  26. 26

    使用指令将窗口小部件集成到有角度的应用程序中

  27. 27

    使用QFileDialog类时如何避免父窗口小部件警告?

  28. 28

    QT C ++-如何在另一个类中引用窗口小部件

  29. 29

    指定小部件的类

热门标签

归档