2012-02-01 3 views
0

Я разрабатываю веб-приложения уже несколько лет и просто решил начать свой путь с разработкой Android в этой книге: Начало разработки приложений для Android wrox.См. Схему действий от другой деятельности

В какой-то момент в книге объясняется, как получить результат от намерения (под заголовком «Возвращение результатов от намерения»).

Эти шаги:

  1. В книге описывается, как изменить файл макета main.xml путем добавления некоторых новых элементов управления.
  2. В книге описывается, как изменить деятельность, которая будет второй один (деятельности2), он говорит, что эта деятельность должна относиться к компоновке различной активности по телефону ​Button btn = (Button) findViewById(R.id.btn_OK); поскольку btn_OK был определен в макете основная деятельность (а не одна из Activity2, она находится в main.xml), метод возвращает null.

Официальная документация описывает:

public View findViewById (int id) 
Since: API Level 1 

находит вид, который был идентифицирован с помощью атрибута ид из XML, который был обработан в onCreate(Bundle).

Так что я что-то упустил или эта книга некорректна?

ответ

0

Использование findViewById() в действии осуществляет поиск в XML-файле макета, который использовался в setContentView() в onCreate().

Если в двух действиях используются разные файлы layout.xml, кнопка внутри этих файлов может иметь один и тот же идентификатор и не будет путать (с помощью findViewById()).

0

В Activity1

public static Button btn; 
void onCreate(...) { 
    btn = (Button) findViewById(R.id.btn_OK); 
} 

В деятельности2:

​Button btn = Activity1.btn; 

Примечание: при использовании Intent для перехода к деятельности2, не называйте activity1.finish(), так как это уничтожит BTN;

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