【问题标题】:Android get view of fragment in activity [duplicate]Android获取活动中片段的视图[重复]
【发布时间】:2020-10-05 22:44:14
【问题描述】:

我有一个活动,我们称之为A,它会像这样启动一个片段:

remoteFragment = new RemoteFragment();
getSupportFragmentManager()
        .beginTransaction()
        .replace(R.id.frameLayout_remote_activity, remoteFragment)
        .commit();

我的remoteFragment 看起来像这样:

public Button okBtn;

public RemoteFragment() {
    // Required empty public constructor
}

@Override
public View onCreateView(LayoutInflater inflater, final ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_remote, container, false);
    okBtn= view.findViewById(R.id.okBtn);

    return view;
}

public RemoteLayoutView getOkBtn() {
    return okBtn;
}

在我的活动中,我试图做到这一点:

Button okBtnMessageNotWorking = remoteFragment.getOkBtn();

okBtnMessageNotWorking 始终为空。

我的问题是如何从我的活动中的片段中获取视图对象?

【问题讨论】:

  • 逻辑上没有限制这样做。也许您在创建片段视图之前调用了getOkBtn
  • 尝试将按钮和方法设为静态

标签: android android-fragments android-activity fragment android-fragmentactivity


【解决方案1】:

在这里,您正试图从layoutOnTopScrollview 中找到视图。相反,您应该从膨胀视图中找到okBtn。请更改代码如下:

@Override
public View onCreateView(LayoutInflater inflater, final ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_remote, container, false);
    okBtn= view.findViewById(R.id.okBtn);

    return view;
}

另外,请确保您在创建片段后调用此方法。

【讨论】:

  • 请看我编辑的代码。我的问题有错误
猜你喜欢
  • 2015-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多