2015-03-04 5 views
3

Я использую Android Studio 1.1.0 и пытаюсь использовать метод Rect .set() в некотором коде, чтобы установить края вновь созданного прямоугольника, и я получаю сообщение «Не удается разрешить набор символов», даже если я импортировал android.graphics.Rect, как было предложено.Метод Android Rect set() отсутствует

Когда я объявляю новый Rect и определяю его ребра в то же время, он отлично работает.

Но если я попытаюсь объявить новый пустой Rect и затем определить его ребра на другой строке, он не сможет распознать, что существует метод set() (или я пытаюсь получить к нему доступ неправильно)?

Кроме того, вместо того, чтобы предлагать мне различные функции Rect при вводе имени Rect, за которым следует символ «.», Он выдает «ClassLoaderCreator» и «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>" 

... 
+0

У вас есть какие-либо другие классы, называемые Rect? – immibis

+0

Никаких других классов, называемых Rect - эта проблема происходит в совершенно новом чистом проекте, где я просто пытаюсь проверить это, объявив и установив эти две переменные Rect (staticRect, dynamicRect), как показано выше. – neongreensticker

ответ

1

Проблема заключается в том что вы пытаетесь манипулировать переменный экземпляр 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 
} 
+0

Спасибо! Думаю, я должен изучить Java немного больше, прежде чем переходить на графику Android ... – neongreensticker

Смежные вопросы