1. 程式人生 > >Android App Widget中如何呼叫RemoteView中的函式

Android App Widget中如何呼叫RemoteView中的函式

      我們在開發App Widget時候,要建立一個RemoteView來呈現介面。但是會發現如果我們想要控制RemoteView中的view時候是無法使用findViewbyId來控制Child View物件。


      從目前SDK情況看,android為我們了一些解決方法。

Remote View提供了一些方法可以操控child view。在文件中可以查到如下函式:
SetBitmap,SetBoolean,SetBundle,setImageViewBitmap,setInt...
1. 第一個引數int viewId來確定操作哪個view
2. 第二個引數 methodName,是第一個引數view物件裡面提供的函式方法的名稱,是個字串型別。比如“setVisibility”
3. 第三個引數 一般依據函式格子不同,但是其實質就是第二個引數methodName所需要的引數。

舉例:
    如果我們需要把widget中的一個view臨時隱藏,我們可以這樣呼叫:remoteviews.setInt(textviewid,"setVisibility",VIEW.INVISIBLE);
    又如,我們改變textview中一些字串,可以呼叫:remoteviews.setInt(R.id.updatedate, "setText", R.string.updateinfor);
關鍵是理解第2個和第3個引數。

當然一般情況下對image,text,visible,我們沒有必要麻煩,可以直接呼叫setViewVisibility,setTextViewText,setImageViewResource。


    但是並不是所有的child view方法都可以呼叫,因為透過Remote View提供的方法是有限的。如,當我們希望呼叫一個不帶引數的函式時就無能為力(就目前SDK看)。
期望後續Android會改善。

    轉載請註明原作者與出處,謝謝!