2010-07-14 21 views
9

Tôi đang làm việc với trình giả lập bằng trình gỡ lỗi và tôi nhận thấy rằng onUpdate không được gọi. Khi tôi thêm tiện ích vào màn hình trình giả lập, tôi thấy điểm ngắt của mình được nhấn trong phương thức onReceive. Phương thức onReceive nhận được ý định android.appwidget.action.APPWIDGET_UPDATE. Tuy nhiên, hàm onUpdate không bao giờ được gọi. Tôi tin rằng nó được xác định chính xác.onUpdate không được gọi trong tiện ích, mặc dù tôi thấy ý định android.appwidget.action.APPWIDGET_UPDATE trong onreceive

@Override 
     public void onUpdate(Context context 
,AppWidgetManager appWidgetManager,int[] appWidgetIds) 
     { 
    // code that sets up remove view and updates appWidgetManager 


    } 

Trả lời

0

Bạn có thiết lập hoạt động cấu hình cho tiện ích của mình không? Bởi vì nếu bạn làm, thì onUpdate không được gọi và đó là công việc của hoạt động cấu hình để cập nhật tiện ích lần đầu tiên theo cách thủ công. Sau đó onUpdate nên được gọi là được định nghĩa trong cấu hình updatePeriod của bạn.

+0

Có, tôi cũng đọc nó, nhưng trong thi scase tôi không sử dụng hoạt động cấu hình và không có – JonF

0

Bạn có điều này trong Tệp kê khai Android không?

 <intent-filter> 
    <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
    </intent-filter> 
16

Gọi phương thức của lớp siêu trong onReceive()

@Override 
public void onReceive(Context context, Intent intent) 
{ 
    // Chain up to the super class so the onEnabled, etc callbacks get dispatched 
    super.onReceive(context, intent); 
    // Handle a different Intent 
    Log.d(TAG, "onReceive()" + intent.getAction()); 

} 

Nếu bạn ghi đè onReceive() trong AppWidgetProvider subclassed của bạn, sau đó onEnabled của nhà cung cấp, onUpdate, vv callbacks không được kích hoạt trừ khi bạn gọi siêu lớp.

Các vấn đề liên quan