2013-12-17 10 views
0

Я не понимаю в этом правиле. Год назад я изучаю ООП из книги C#. Итак, я изучаю C# OOP. Когда я программирую java, для понимания java-кодов требуется мало усилий. Но, когда я перехожу к андроиду. Я нахожу несколько странных вещей. например classname.this, object.this, конструктор, где его параметром является интерфейс. Я думаю, что андроид нелегкий, если у меня проблема, когда проблема никогда не задана в stackoverflow, я думаю, что умру. Потому что я не могу понять все методы в android-библиотеке (документация по библиотеке Android). Когда я читаю в документации, я просто понимаю немногие из всех методов, я понимаю определения многих методов. Но я всегда смущаюсь, когда пытаюсь понять параметры метода.Android - Confused В Android OOP

Я хочу спросить. , ,

Почему это правильно:

final EditText textBoxSearch = (EditText) findViewById(R.id.textbox_search); 
    textBoxSearch.setVisibility(EditText.GONE); 

И почему это не так:

textBoxSearch.setVisibility(textBoxSearch.GONE); 
+4

'GONE' - статическая переменная, а не переменная экземпляра, поэтому вам нужно сделать' class.GONE'. Он исходит из ['View'] (http://developer.android.com/reference/android/view/View.html#GONE), подклассы' EditText'. Это то же самое, что и [статические переменные в Java] (http://www.caveofprogramming.com/frontpage/articles/java/java-for-beginners-static-variables-what-are-they/). – thegrinner

+0

- потому что 'not right' немного запутан. Скажите, какие ошибки вы получаете. –

+0

@thegrinner Я думаю, что вы должны ответить не на комментарий – AndikaK

ответ

3

GONE - статическая переменная, а не переменная экземпляра, поэтому вам нужно сделать class.GONE. Он исходит от View, который EditText подклассы.

В основном, он относится к классу , а не к экземпляру.

Это такое же поведение, как static variables in Java:

Иногда вы хотите иметь переменные, которые являются общими для всех объектов. Это достигается с помощью статического модификатора. Поля, которые имеют статический модификатор в своем объявлении, называются статическими полями или переменными класса. Они связаны с классом, а не с каким-либо объектом. Каждый экземпляр класса использует переменную класса, которая находится в одном фиксированном месте в памяти. Любой объект может изменить значение переменной класса, но переменные класса также можно манипулировать, не создавая экземпляр класса.

Переменные класса ссылаются на само название класса [...].

0

Я вроде противоположностью вас ... Я узнал, Java первый и только знать немного C#. Но, насколько я знаю, это очень похоже на обоих.

EditText.GONE - статическая конечная переменная (например, const в C).

Простой способ подумать о том, что для каждого класса у вас есть все экземпляры, которые вы можете создать из него, но у вас также есть уникальный объект для самого класса, и этот объект есть то, что имеет все статические переменные и методы в нем.

+0

моя книга не очень хорошая – AndikaK

+0

Я рекомендую прочитать официальные уроки. Вот как я начал работать с Java. http://docs.oracle.com/javase/tutorial/java/index.html – Tenfour04

+0

Я думаю, что «неправильный» способ все еще работает, компилятор просто дает вам предупреждение, потому что «неправильный» способ может указывать на то, что вы случайно делаете то, чего не намерены делать. Я думаю, что это работает так же, как const в C#, за исключением того, что компилятор не предупреждает вас об этом. – Tenfour04

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