2013-03-17 6 views
19

DialogFragmentにコンテキスト変数を渡すことは可能ですか?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のような任意の関数を見つけることができません。それは可能ですか?

答えて

47

あなたDialogFragmentContextインスタンスを取得するための非常に便利な方法があります。

getActivity() 

Fragment#getActivity()Fragmentが接続されている(Contextである)Activityのインスタンスを返します。フラグメントのonAttach()が呼び出された後に使用します。あなたが見ることができるように、getActivity()onCreate()からonDestroy()まで有効にする必要があります下の図はFragment lifecycleを示しています。詳細については

enter image description here

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

Fragmentドキュメントを読む方法ONATTACH使用する必要があります。このようなダイアログ断片

+0

ショー第getActivity(呼び出される()メソッド)がnullです。だから私はどのようにコンテキストを得ることができますか? – ralphgabb

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

をONATTACH (アクティビティアクティビティ)が廃止され、

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


使用ONATTACH(コンテキスト・コンテキスト)代わり

@Override 
public void onAttach(Context context) { 
    super.onAttach(context); 
} 
関連する問題