使用findFragmentByTag获取片段视图不要返回whit getView

时间:2013-12-27 00:48:22

标签: java android android-fragments android-alertdialog

我尝试使用getFragmentManager.findFragmentbyTag实例化我的片段中的getView,请参阅下面的代码:

MyTaskFragment.java:

初始化我的片段

DialogFragment newFragment = new newTaskFragment();
               newFragment.show(getFragmentManager(), "newTask");
MyTaskFragment中的

基本上就是DialogFragment:

public static class newTaskFragment extends DialogFragment {
    // ..
    builder.setView(inflater.inflate(R.layout.new_task_dialog, null))
    // ..
    return builder.create();
    // ..
}

并且MyTaskFragment里面还有一个选择器:

public static class TimePickerFragment extends DialogFragment
              implements TimePickerDialog.OnTimeSetListener {

这就是问题(内部选择器):

Fragment fragment = getFragmentManager().findFragmentByTag("newTask");
View viewv = fragment.getView();

Button button = (Button) viewv.findViewById(R.id.choice_hour);

上面的Button始终返回null且有错误,id在布局R.layout.new_task_dialog内。我不明白。
请有人帮助我。

1 个答案:

答案 0 :(得分:0)

如果出现以下情况,您可能会收到此错误:

  • 您的视图ID choice_hour有拼写错误且与视图ID不匹配 您希望在View层次结构中找到。
  • 有多个具有“newTask”ID的片段,但没有 分享相同的布局。
  • 你的片段之前正在调用你的OnTimeSetListener onFinishInflate()。
  • 你的片段之前正在调用你的OnTimeSetListener onCreateView()被调用。
  • 在片段之前调用OnTimeSetListener 附在你的活动上。

有关详细信息,请参阅此答案:findViewByID returns null