在没有 FragmentTransactions 或 .commit 的情况下初始化片段?错误?
Initializing a Fragment without FragmentTransactions or .commit? Mistaken?
我目前正在研究 WIFIDirect,主要是按照下面列出的 Google 的演示
我对演示从 listFragment 启动详细片段的方式感到非常困惑,其中来自父主机的接口调用 activity (showDetails(device)),如下所示
@Override
public void showDetails(WifiP2pDevice device) {
DeviceDetailFragment fragment = (DeviceDetailFragment) getFragmentManager()
.findFragmentById(R.id.frag_detail);
fragment.showDetails(device);
}
然后我们跳转到 detailFragment 自己的 showDetails(device)) 方法:
public void showDetails(WifiP2pDevice device) {
this.device = device;
this.getView().setVisibility(View.VISIBLE);
TextView view = (TextView) mContentView.findViewById(R.id.device_address);
view.setText(device.deviceAddress);
view = (TextView) mContentView.findViewById(R.id.device_info);
view.setText(device.toString());
}
我搜索了代码,没有任何地方有 .commit() 或 FragmentTransaction。我怀疑是 .getView.SET_VISIBILITY 调用,但如果没有 .commit,应该不会发生任何事情,对吗?如有任何帮助,我们将不胜感激!
如果Fragment直接在xml中,则不需要添加事务。当您将屏幕元素交换为片段时,您只需要一个事务。
我目前正在研究 WIFIDirect,主要是按照下面列出的 Google 的演示
我对演示从 listFragment 启动详细片段的方式感到非常困惑,其中来自父主机的接口调用 activity (showDetails(device)),如下所示
@Override
public void showDetails(WifiP2pDevice device) {
DeviceDetailFragment fragment = (DeviceDetailFragment) getFragmentManager()
.findFragmentById(R.id.frag_detail);
fragment.showDetails(device);
}
然后我们跳转到 detailFragment 自己的 showDetails(device)) 方法:
public void showDetails(WifiP2pDevice device) {
this.device = device;
this.getView().setVisibility(View.VISIBLE);
TextView view = (TextView) mContentView.findViewById(R.id.device_address);
view.setText(device.deviceAddress);
view = (TextView) mContentView.findViewById(R.id.device_info);
view.setText(device.toString());
}
我搜索了代码,没有任何地方有 .commit() 或 FragmentTransaction。我怀疑是 .getView.SET_VISIBILITY 调用,但如果没有 .commit,应该不会发生任何事情,对吗?如有任何帮助,我们将不胜感激!
如果Fragment直接在xml中,则不需要添加事务。当您将屏幕元素交换为片段时,您只需要一个事务。