从 Activity 获取片段视图的 ID

Get id of fragment's view from Activity

我有片段中的视频视图。当我按下按钮时,它在横向模式下显示为全视图,但当我按下按钮时,它应该会显示为正常视图。为此,我在 Activity 中处理 onBackPressed(),但我无法在 Activity 中获取该视频视图的 ID。那么如何获取 ActivityonBackPressed() 中的视频视图 ID,它位于 Fragment class.

这是 Fragment 中用于全屏显示视频的代码:

fullScreen = (ImageView) controller.findViewById(R.id.fullscreen);
fullScreen.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT, 8.0f);
        videoView.setLayoutParams(param);
        getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

    }
});

这是我需要在Activity中处理的:

@Override
public void onBackPressed() {

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 0, 5.0f);
    videoView.setLayoutParams(param);

    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
        super.onBackPressed();
    }

}

但是我这里需要 videoView id。如何在 Activity 中获取?

蛮力 方法是从您的片段中获取视图:


@Override
public void onBackPressed() {

    VideoView videoView = yourFragment.getView().findViewById(R.id.your_video_view);
    ...
}


您可以执行以下操作之一:

  1. 调用接口方法将您的 Fragment 连接到 Activity。
  2. 从您的 activity 调用片段的 public 方法。