2012-10-17 4 views
0

Почему мы используем Button таким образом, чтобы инициализировать.android Button:

b1 = (кнопка) findViewById (R.id.bEdit1);

И почему мы используем (Button) перед findViewById.

Благодаря

+0

Сначала научиться Java для отливки объекта. – Dharmendra

ответ

2

Это потому, что findViewById объявляется возвращает View. Вам нужно понизить возвращаемое значение, чтобы присвоить его переменной Button. (Я предполагаю, что из кода, который разместил, что b1 будет объявлен Button.)

Обратите внимание, что если bEdit1 не соответствует Button в иерархии представлений, то это будет генерировать ClassCastException. Это должно быть то, что вы ловите во время разработки.

+0

findviewbyId принадлежит классу вида, который является родительским классом. а Button - подкласс? я обряд? –

+0

@lizajohn - Да. 'findViewById' возвращает объект, который является либо' View', либо подклассом 'View', в зависимости от того, как объявлен XML (или как была построена иерархия представления). 'Button' является подклассом' View'. –

+0

спасибо спасибо .... –

0

(R.id.bEdit1) - целое число, которое объявляется в R.java Файл, чтобы мы должны были его включить в Button, чтобы получить ссылку на него.

R.java файл содержит все объявления переменных.

1

Мнения могут иметь целочисленный идентификатор, связанный с ними. Эти идентификаторы обычно назначаются в XML-файлах макета и используются для поиска определенных видов в дереве представлений. Общий шаблон является:

Define a Button in the layout file and assign it a unique ID. 

<Button 
    android:id="@+id/bEdit1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/my_button_text"/> 

С OnCreate метод в деятельности, найти кнопку

 Button myButton = (Button) findViewById(R.id.bEdit1); 

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

+0

спасибо. я понял –

0

При работе с Java мы делаем что-то вроде этого

JButton mbutt = new JButton("Click_Me");

В коде выше мы Creating и Assigning объект типа JButton к Reference объектов переменной типа JButton.

В то время как мы работаем с Android мы делаем что-то вроде этого

Button b1 = (Button) findViewById(R.id.bEdit1);

Здесь мы уже создалиButton с помощью XML, и теперь со ссылкой на этуButton object используя приведенное выше утверждение.

(Button) является явного приведения сделано из View типа для Button типа. То, что мы получаем из findViewById, является View, теперь мы должны конкретно упомянуть, что это за просмотр, вот его Button.

0

Подпись findViewById выглядит

public final View findViewById (int id) 

Что будет, искать вид ребенка с заданным идентификатором. Если это представление имеет данный идентификатор, верните это представление.

final Button b1; 

findViewById (R.id.bEdit1); Теперь он будет искать представление, основанное на Id bEdit1, и вернет вам представление, теперь ваша задача - сместить его в соответствующее представление. , который, как мы делаем это как

b1 = (Button)findViewById(R.id.bEdit1);