Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-通过小部件配置活动更新小部件_Android_Android Intent_Configuration_Widget_Settings - Fatal编程技术网

Android-通过小部件配置活动更新小部件

Android-通过小部件配置活动更新小部件,android,android-intent,configuration,widget,settings,Android,Android Intent,Configuration,Widget,Settings,所以,在过去的几个小时里,我一直在尝试制作一个合适的Android小部件,但迄今为止没有成功 问题是我的意图没有得到更新 所以基本上,我有一个配置活动,当小部件被创建时,它按照它应该的方式工作 我还想制作一个设置按钮,允许用户打开配置活动并更改一些设置 特别是,我想允许用户通过小部件打开一些pdf文件,当它在创建小部件之后立即设置时,这很好,但当它通过小部件的设置按钮(显示将打开哪个文件的TextView)仅UI进行更改时,但打开文件的意图没有改变 我正在调试代码,文件被正确选择(这就是为什么T

所以,在过去的几个小时里,我一直在尝试制作一个合适的Android小部件,但迄今为止没有成功

问题是我的意图没有得到更新

所以基本上,我有一个配置活动,当小部件被创建时,它按照它应该的方式工作

我还想制作一个设置按钮,允许用户打开配置活动并更改一些设置

特别是,我想允许用户通过小部件打开一些pdf文件,当它在创建小部件之后立即设置时,这很好,但当它通过小部件的设置按钮(显示将打开哪个文件的TextView)仅UI进行更改时,但打开文件的意图没有改变

我正在调试代码,文件被正确选择(这就是为什么TextView得到正确更新)意图应该被正确设置,但它仍然会打开在开始时选择的文件

这是我代码的一部分:

    Intent intent = getIntent(); //intent to get the widget ID
    Bundle extras = intent.getExtras();
    if (extras != null) {
        mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);


        RemoteViews views = new RemoteViews(this.getPackageName(), R.layout.wi_widget_layout); //widget layout
        views.setTextViewText(R.id.button_plan, fileCleanName); //setting text of the TextView showing pdf's name, works just fine

        File pdfFile = StorageModel.getFileForName(fileName, this); //method to get the file, while debugging, proper file is taken
        Intent openFile = StorageModel.openFile(pdfFile, this); // Intent method, returns intent to open pdf application for the given file

        openFile.putExtra("Random", Math.random() * 1000);
        //I've read somewhere Android is caching intents, so I tried it but didn't help

        PendingIntent pendingFile = PendingIntent.getActivity(this, 0, openFile, 0);

        views.setOnClickPendingIntent(R.id.button_plan, pdfFile);

        Intent settings = new Intent(this, WidgetConfigure.class).setAction(AppWidgetManager.ACTION_APPWIDGET_CONFIGURE); 
        //remaking intent for the settings button
       settings.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,mAppWidgetId);
        PendingIntent settingsPending = PendingIntent.getActivity(this, 0, settings, 0);
        views.setOnClickPendingIntent(R.id.button_settings, settingsPending);

        appWidgetManager.updateAppWidget(mAppWidgetId, views);

        setResult(RESULT_OK);
        finish();

    }

如果有人碰巧遇到类似的问题,显然这部分代码还可以,问题在于返回打开文件意图的方法,尽管它非常简单。 打开我的pdf文件的意图是通过调用

     createChooser 
方法在我的最终意图中,返回正常意图后,一切都正常工作。我猜Android不喜欢给你一个选择:D