2015-10-16 87 views
0

因此,最近幾個小時我試圖製作一個合適的Android小部件,目前爲止沒有成功。Android - 通過小部件配置活動更新小部件

問題是我的意圖沒有得到更新。因此,基本上,我有一個配置活動,當創建窗口小部件時,它的工作原理應該是這樣的。

我也想做一個設置按鈕,這將允許用戶打開配置活動並更改一些設置。

特別是我想允許用戶通過小部件打開一些pdf文件,當它在創建小部件的過程中被設置好時,但是當它通過設置按鈕更改時,小部件的UI(TextView顯示哪個文件將被打開),但是打開文件的意圖不會改變。

我正在調試代碼,文件被正確選擇(這就是爲什麼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(); 

    } 

回答

0

如果有人碰巧得出了類似的問題,代碼顯然這部分是確定的,這個問題是在被返回的意圖來打開文件的方法,儘管它非常簡單。 打開我的PDF文件,這樣做的目的是通過調用

 createChooser 

方法對我的最終意圖做,回來後只是正常的意圖一切工作,因爲它應該。我猜Android不喜歡給出選擇:D