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导入另一个包吗?提前谢谢。
答案 0 :(得分:2)
当您使用AppWidgets时,代码的工作方式会有所不同。基本上你需要使用RemoteView而不是传统的Buttons和findViewByIds。有关如何编写AppWidgets的链接,请参阅此similar question。特别是developer.com教程的两个链接。
答案 1 :(得分:1)
您正在延长AppWidgetProvider
。但是方法findViewById
没有在那里实现; findViewById
中定义了{{1}}。