传递上下文作为DialogFragment的参数

时间:2013-03-17 18:05:43

标签: android android-dialogfragment android-context

可以将上下文变量传递给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这样的函数来传递上下文。这可能吗?

4 个答案:

答案 0 :(得分:59)

您的DialogFragment有一个非常方便的方法来获取Context实例:

getActivity()

Fragment#getActivity()将返回Activity附加到的ContextFragment)的实例。在调用片段onAttach()后使用它。下面的图表说明了Fragment lifecycle,正如您所看到的,使用getActivity()onCreate()的{​​{1}}应该是有效的来电。

enter image description here

有关详细信息,请参阅Fragment文档

答案 1 :(得分:6)

@Override
public void onAttach(Activity activity) {
    // TODO Auto-generated method stub
    super.onAttach(activity);
    context=activity;
}

需要使用onAttach方法:for dialog Fragment

答案 2 :(得分:2)

onAttach(活动活动)现已弃用,

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
}


使用 onAttach(上下文上下文)代替

@Override
public void onAttach(Context context) {
    super.onAttach(context);
}

答案 3 :(得分:0)

像这样使用:

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;
    }
}