【发布时间】:2016-10-27 08:36:55
【问题描述】:
更改数据后,我无法获取要更新的片段。我打电话给
getFragmentManager().beginTransaction().detach(this).attach(this).commit();
但是 onCreateView 没有被调用。我在 refreshFragment() 中尝试了几种不同的方法。在我输入上述代码行之后,我确实看到了“I/InjectionManager:dispatchCreateOptionsMenu”的消息,所以发生了一些事情,但没有调用 onCreateView()。
public class MainActivityFragment extends Fragment {
private static Logger logger = Logger.getLogger(MainActivityFragment.class);
String poolWord = "ABCDE";
String newWord = "";
public MainActivityFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
logger.info("onCreate------------------------");
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
logger.info("onCreateView------------------------");
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_main, container, false);
GridView gridViewPool = (GridView) view.findViewById(R.id.gridviewPool);
gridViewPool.setAdapter(new LetterImageAdapter(getActivity(), poolWord));
gridViewPool.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
logger.error("po " + position);
updateWords(position);
refreshFragment();
}
});
GridView gridviewNewWord = (GridView) view.findViewById(R.id.gridviewNewWord);
gridviewNewWord.setAdapter(new LetterImageAdapter(getActivity(), ""));
return view;
}
private void refreshFragment() {
logger.info("refreshFragment------------------------");
getFragmentManager().beginTransaction().detach(this).attach(this).commit();
// getFragmentManager().beginTransaction().replace(R.id.fragment, this).attach(this).commit();
// Fragment fragment = getFragmentManager().findFragmentById(R.id.fragment);
//getFragmentManager().beginTransaction().detach(fragment).attach(fragment).commit();
getFragmentManager().executePendingTransactions();
}
【问题讨论】:
-
我修改了 refreshFragment() 并将其分解为单独的行,然后添加了一些日志记录以查看片段是否已分离。 isDetached 在我调用 transaction.detach() 之前和之后都返回 false。我是新手,所以不确定会发生什么