2017-02-04 19 views
1

DiscussionFragmentでカスタムダイアログを作成しました。ダイアログが正常に機能しています。フラグメントとDialogからDialogを作成ダイアログフラグメントを作成し、dialogFragmentのDialogのTextViewにアクセスしたい

//Dialog in Fragment Class 
    final Dialog dialog = new Dialog(getActivity()); 
       dialog.setContentView(R.layout.create_post_layout); 
       dialog.setTitle("Post"); 

ダイアログのボタンのOnClickからTimePickerFragmentを呼び出すことに成功しました。

setTimeButton.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          DialogFragment newFragment = new TimePickerFragment(); 
          newFragment.show(getFragmentManager(), "create_post_layout"); 
          //(getFragmentManager(),"post_layout"); 
         } 
        });  

今、私はこのようなTimePickerFragmentクラスにダイアログののTextViewにアクセスしたい、

public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
     //Do something with the user chosen time 
     //Get reference of host activity (XML Layout File) TextView widget 

     View dialogView = getActivity().getLayoutInflater().inflate(R.layout.create_post_layout, null); 

     TextView tv = (TextView) dialogView.findViewById(R.id.postTimeTV); 
     tv.setText("String"); 
     String min = String.valueOf(minute); 

のsetTextはE /のTextViewを返す動作していない:initAddtionalStyleデフォルト なしにNullPointerException

Just Activity Not Dialogの場合、私はOnTimeSetで次のようにTextViewにアクセスできます

TextView tv = (TextView) getActivity().findViewById(R.id.postTimeTV); 
     tv.setText("String"); 
     String min = String.valueOf(minute); 

答えて

0

もっと良い回答を得るために、TimePickerFragmentのコードを投稿してください。

あなたのダイアログのコンテンツビューとして使用することなく、レイアウトファイルをonTimeSet()で膨らませることができます。 これで、ダイアログビューのものではないこの新しい膨張したビューのTextViewが得られます。

正しいビューを使用してグローバル変数に保存するには、DialogFragments onCreateDialog()のTextviewにアクセスします。 Like:

private TextView tv; 

@Override 
public Dialog onCreateDialog(){ 
    .... 
    tv = (TextView) ... findById(...) 
} 

public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
    tv.setText(...); 
} 
+0

実際には、TimePickerFragmentはtextviewが配置されているダイアログを作成しません。なぜ私はonCreateDialogを呼び出さなければならないのですか? –

+0

私は間違っていると思います...あなたは通常のダイアログをButtonで作成してTimePickerFragmentDialogを開き、その後に通常のダイアログで時間を表示したいですか? – fijili