我使用的是Android Studio 1.1.0,并试图在某些代码中使用Rect.set()方法来设置新创建的矩形的边缘,尽管我按照提示导入了Android.graphics.Rect,但我还是收到了消息"无法解析符号'set'"。
当我声明一个新的Rect并同时定义它的边时,它工作得很好。
但是,如果我试图声明一个新的空Rect,然后在另一行上定义它的边,它将无法识别set()方法的存在(或者我试图错误地访问它?)。
此外,当我键入Rect名称后跟"."时,没有提示我使用各种Rect函数,弹出"ClassLoaderCreator"one_answers"Creator"。
我做错了什么,我该如何让这个和其他Rect函数工作?我试着清理和重建我的项目。
import android.graphics.Rect;
public class MainActivity extends ActionBarActivity {
Rect staticRect = new Rect(100,100,200,200); // works fine
Rect dynamicRect = new Rect(); // this is okay, too, but not useful until set
dynamicRect.set(200,200,300,300); // Cannot resolve symbol 'set'
dynamicRect. // As I start typing here, after the . none of the Rect functions appear,
// just "ClassLoaderCreator<T>" and "Creator<T>"
...
问题是您试图从静态上下文(即从实例方法外部)操作实例变量dynamicRect
。以下是您的选择:
创建一个方法来进行初始化,并在适当的地方调用它。例如:
private void setupRects() {
dynamicRect.set(200,200,300,300);
// do other stuff
}
如果合适的话,您也可以将初始化代码放在活动的onCreate
方法中。
或者,如果您希望静态初始化dynamicRect
,可以执行以下操作:
static Rect dynamicRect = new Rect();
static {
dynamicRect.set(200,200,300,300);
// do other stuff
}