Подтвердить что ты не робот

Передача контекста в качестве аргумента 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 для передачи контекста. Это можно сделать?

4b9b3361

Ответ 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);
}