GetActivity(), где он определен?
Я очень новичок в андроиде, и я следую этому примеру.
В коде говорится, что мы должны сделать следующие шаги, чтобы получить диалоговое окно:
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
// 2. Chain together various setter methods to set the dialog characteristics
builder.setMessage(R.string.dialog_message)
.setTitle(R.string.dialog_title);
// 3. Get the AlertDialog from create()
AlertDialog dialog = builder.create();
Но где определяется метод getActivity()
?
Я не могу найти этот метод.
Ответы
Ответ 1
Метод getActivity()
дает контекст Activity. Вместо него вы можете использовать YourActivityName.this
.
Метод getActivity()
обычно используется в фрагментах, чтобы получить контекст активности, в котором они вставлены или завышены.
например,
AlertDialog.Builder builder = new AlertDialog.Builder(YourActivityName.this);
или если вы сами пишете код в своей деятельности,
AlertDialog.Builder builder = new AlertDialog.Builder(this);
будет тренировка. Пожалуйста, не стесняйтесь задавать любые сомнения.
Ответ 2
new AlertDialog.Builder() нуждается в контексте в качестве входного параметра. Поэтому попробуйте
AlertDialog.Builder builder = new AlertDialog.Builder(yourActivityName.this);
Ответ 3
getActivity() реализуется в классе Fragment.
См. http://developer.android.com/reference/android/app/Fragment.html
Ответ 4
Конструктор AlertDialog.Builder
ожидает параметр Context
. Context
доступен из Activity
, Service
и т.д., так как все они extend
Context
и могут быть переданы как this
.
Метод getActivity()
объявлен как другие, упоминаемые в классе Fragment
.
Ответ 5
В этой статье описывается, как создать AlertDialog
в Fragment
. в разделе "Фрагменты" вы можете получить соответствующий Activity
, вызвав метод getActivity()
. но в вашем случае я предполагаю, что вы делаете это в Activity
. поэтому вам не нужно вызывать getActivity()
. просто используйте this
AlertDialog.Builder builder = new AlertDialog.Builder(this);
Ответ 6
getActivity(); это метод андроидного фрагмента, если вы хотите отобразить диалог в своей деятельности, просто передайте this
вашей активности вместо getActivity()
.
Ответ 7
getActivity()
- это метод-член класса суперкласса, из которого вы распространяетесь. Он определен в классе Activity. infact onCreate()
, onPause()
, а все остальные функции также определены в родительском классе Activity.
Ответ 8
У меня была точно такая же проблема, и, наконец, я нашел то, что я действительно подозревал...
Просто добавьте:
dialog.show();
... и вуаля. Вот оно.
Интересно, почему это не указано в исходном примере??
Ответ 9
Обновление уровня API для Android 23.
Используйте getContext()
вместо getActivity()
.
Ответ 10
//1. Создайте экземпляр AlertDialog.Builder со своим конструктором
AlertDialog.Builder builder = new AlertDialog.Builder(yourActivityName.this);
//2. Цепочка между различными способами настройки для установки характеристик диалога
builder.setMessage(R.string.dialog_message).setTitle(R.string.dialog_title);
//3. Получить AlertDialog из create()
AlertDialog dialog = builder.create();
//4. Показать AlertDialog
dialog.show();
Ответ 11
U может использовать getAppicationContext()
который ссылается на Activity (Java Class), который вы используете.
Чтобы узнать разницу между this
и getApplicationContext()
нажмите эту ссылку Разница между getApplicationContext() и getActivity()