我在主要活动中由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的任何想法?
答案 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;
}
这可能有助于你