Передача контекста в качестве аргумента DialogFragment
возможно передать переменную контекста в диалоговое окно "Диалог"?
Я использую этот код внутри диалога для передачи строки:
public static ConfirmDialog newInstance( String f) {
ConfirmDialog d = new ConfirmDialog();
Bundle args = new Bundle();
args.putString("FILE_NAME", f);
d.setArguments(args);
return d;
}
но я не могу найти какую-либо функцию, например putString для передачи контекста. Это можно сделать?
Ответы
Ответ 1
В вашем DialogFragment
есть очень удобный метод для получения экземпляра Context
:
getActivity()
Fragment#getActivity()
вернет экземпляр Activity
(который является Context
), к которому привязан Fragment
, Используйте его после вызова фрагмента onAttach()
. На приведенной ниже диаграмме показан жизненный цикл Fragment
, как вы можете видеть, использование getActivity()
от onCreate()
до onDestroy()
должно быть действительным звоните.
![enter image description here]()
Для получения дополнительной информации прочитайте документацию Fragment
Ответ 2
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
context=activity;
}
Необходимо использовать метод onAttach: для диалога Fragment
Ответ 3
используйте следующее:
public class Dialog extends DialogFragment implements OnClickListener {
public void onClick(View v) {
switch (v.getId()) {
case R.id.message: {
this.startActivity(new Intent(context, Login.class));
//or use getActivity() instead of context
}
break;
}
}
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
context=activity;
}
}
Ответ 4
onAttach (активность активности) теперь устарела,
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
}
используйте onAttach (контекст контекста) вместо
@Override
public void onAttach(Context context) {
super.onAttach(context);
}