2014-02-19 3 views
4
/** Called when the user clicks the Send button */ 
public void sendMessage(View view) { 
    Intent intent = new Intent(this, DisplayMessageActivity.class); 
    EditText editText = (EditText) findViewById(R.id.edit_message); 
    String message = editText.getText().toString(); 
    intent.putExtra(EXTRA_MESSAGE, message); 
    startActivity(intent); 
} 

в линииобъяснить синтаксис EditText editText = (EditText) findViewById (R.id.edit_message);

EditText editText = (EditText) findViewById(R.id.edit_message); 

EditText классно и editText является экземпляром мы создаем. findViewById(R.id.edit_message) является метод и R.id.edit_message является аргументом мы передаем

Но я не могу понять, почему есть Thos (EditText) присутствует? Это вызов конструктора?

ответ

6

Это явное приведение типов. findViewById() возвращает View, а (EditText) явно выводит его на EditText (который является подклассом View). Это работает, поскольку возвращаемый объект фактически есть -EditText, то есть объект этого класса или один из его подклассов. Если это не так, вы получите ClassCastException.

Подробнее: http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html

+0

Спасибо за ответ – Nikhil

3
is it the call to constructor? 

No.

EditText editText = (EditText) findViewById(R.id.edit_message); 

в строке выше (EditText) для типажей ..

findViewById() который возвращает View object.so мы типаж его EditText Объект.

EditText является подклассом View Класс.

+0

спасибо много !! – Nikhil

1

findViewById(R.id.edit_message) возвращает класс View. EditText простирается от этого класса, поэтому нам нужно отличить View - EditText. Если нам нужен вид класса, то мы можем просто написать View v = findViewById(R.id.some_view);

+0

Спасибо, это помогло – Nikhil

2

В следующей строке ...

EditText editText = (EditText) findViewById(R.id.edit_message); 

findViewById(R.id.edit_message) возвращающая вид ... Но эта точка зрения обобщается понятие, оно может быть любого типа Посмотреть. Поэтому вы не можете определить из этого возвращенного представления, какой тип этого. Вот почему у вас есть Cast, который возвратил представление к определенному виду. Здесь возвращенный вид сбрасывается до EditText с использованием (EditText).

+0

Спасибо, это помогло! – Nikhil

+0

Да, на самом деле до сих пор у меня не было привилегированного повышения; будучи новичком в stackoverflow – Nikhil

-1

<EditText android:id="@+id/edit_message" <<<<<<<<<<<<<<<<<< android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:hint="@string/edit_message"/>

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