2010-05-24 51 views
4

Eclipse將findViewById(int)標記爲undefined;它爲getResources()做了同樣的事情,但我可以通過調用context.getResources()來解決此問題(如下所示),並且似乎無法找到類似的findViewById解決方法。這裏是代碼:findViewById undefined

package com.myapp.android.MyWidget; 

import android.appwidget.AppWidgetProvider; 
import android.appwidget.AppWidgetManager; 
import android.content.Context; 
import android.content.ComponentName; 
import android.content.pm.PackageManager; 
import android.content.res.Resources; 
import android.util.Log; 
import android.view.View; 
import android.widget.RemoteViews; 
import android.widget.Button; 
import android.os.Bundle; 

public class MyWidget extends AppWidgetProvider { 
private static String[] states; 

@Override 
public void onEnabled(Context context) { 
    final Button button = (Button) findViewById(R.id.widget_state_button); 

    states = context.getResources().getStringArray(R.array.states); 
} 

是否有另一個我需要導入findViewById包?提前致謝。

回答

2

當您使用AppWidgets時,代碼的工作方式會有所不同。本質上你需要使用RemoteView而不是傳統的Button和findViewByIds。有關如何編寫AppWidgets的鏈接,請參閱此similar question。特別是developer.com教程的兩個鏈接。

+0

謝謝!我認爲這與在一個小部件而不是活動中工作有關,但找不到任何東西 - 這些鏈接幫助我完成了我正在嘗試做的事情。 – areyling 2010-05-24 12:40:20

1

您正在延伸AppWidgetProvider。但方法findViewById沒有在那裏實現; findViewByIdActivity中定義。

+0

findViewById()是僅由Activity和View類的API提供的方法。 在您的onEnabled(..)方法中,您正在調用findViewById(..)on this this隱式對象引用,在您的代碼中將其轉換爲AppWidgetProvider類型的對象。 – Samuh 2010-05-24 11:16:07