findViewById未定义

时间:2010-05-24 10:33:44

标签: android android-widget

Eclipse将findViewById(int)标记为未定义;它为getResources()做了同样的事情,但是我能够通过调用context.getResources()来解决这个问题(如下所示),并且似乎找不到类似的findViewById解决方法。这是代码:

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 个答案:

答案 0 :(得分:2)

当您使用AppWidgets时,代码的工作方式会有所不同。基本上你需要使用RemoteView而不是传统的Buttons和findViewByIds。有关如何编写AppWidgets的链接,请参阅此similar question。特别是developer.com教程的两个链接。

答案 1 :(得分:1)

您正在延长AppWidgetProvider。但是方法findViewById没有在那里实现; findViewById中定义了{{1}}。