ImageButton是Null

时间:2016-07-21 15:32:18

标签: android android-fragments

我在主要活动中由TabLayout打开的片段中有一个ImageButton。当我尝试在onCreate(Bundle savedInstance)内的主要活动中获取对ImageButton的引用时:

 playPauseButton = (ImageButton)findViewById(R.id.play_pause);

它返回null。包含我的ImageButton的片段如下所示:

 <ImageButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/play_pause"
    android:layout_gravity="center_horizontal"
    />

关于为什么返回null的任何想法?

3 个答案:

答案 0 :(得分:2)

您无法直接从MainActivity中获取片段内的视图,因为它不是包含在其中的视图,它包含在片段中,因此您必须在片段创建后从片段内获取它(即在onViewCreated()方法中)和为片段创建的视图实例:

 @Override
 public void onViewCreated(View view, Bundle savedInstanceState) {
     super.onViewCreated(view, savedInstanceState);

     // Declaring the View you want
     ImageButton play_pause = (ImageButton) view.findViewById(R.id.play_pause);

 }

答案 1 :(得分:1)

使用 getView()

获取此类参考
 playPauseButton = (ImageButton) getView().findViewById(R.id.play_pause);

答案 2 :(得分:0)

如果你延伸Fragment意味着应该使用like,

@Override

public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.YOUR_LAYOUT_FILE_NAME, container, false);
    ImageButton playPauseButton = (ImageButton)rootView.findViewById(R.id.play_pause);


    return view;

}

这可能有助于你