Проблема в том, что setFeatureInt
просто устанавливает идентификатор ресурса для заголовка, что приведет к новой инфляции ресурса макета, которая будет размещена в системе FrameLayout
с именем id/title_container
. Это можно проверить с помощью средства просмотра иерархии в Eclipse.
По сути, вы получаете два экземпляра основного макета. Один устанавливается в качестве представления содержимого (под заголовком), а другой - в качестве заголовка. Когда вы звоните findViewById
, он будет искать в представлении содержимого только те представления, которые соответствуют идентификатору. Это означает, что кнопки edit
и done
, которые вы извлекаете, являются теми, которые находятся в представлении содержимого.
Если вы хотите получить доступ к кнопкам в области заголовка, вы можете использовать
View v = getWindow().getDecorView();
edit=(Button)v.findViewById(R.id.edit);
done=(Button)v.findViewById(R.id.done);
edit.setVisibility(View.INVISIBLE);
Это позволит выполнить поиск по всей структуре представления окна, а не только по представлению содержимого, что позволит решить вашу проблему.