我有两个片段,“A”和“B”。
当我将(BackPressed)返回到我的片段“A”时,edittext的值不会刷新。为什么呢?
我有这段代码来调用片段“B”。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_container_pedido_novo,
container, false);
btnAddProduto = (Button) view.findViewById(R.id.btnNovoProduto);
btnAddProduto.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Fragment fragment = new FragmentContainerProduto(true);
FragmentManager frgManager = getActivity()
.getSupportFragmentManager();
frgManager.beginTransaction()
.replace(R.id.content_frame, fragment)
.addToBackStack(null).commit();
}
});
edtCodPedido = (EditText) view.findViewById(R.id.edtCodPedidoNovo);
edtVlBruto = (EditText) view.findViewById(R.id.edtVlBrutoPedidoNovo);
edtCodPedido
.setText(String.valueOf(GlobalUtil.objPedido.getCodPedido()));
edtVlBruto.setText(String.valueOf(GlobalUtil.objPedido.getVlBruto()));
return view;
}
有人?
答案 0 :(得分:0)
当您从后台堆栈返回片段时,Android不会重新创建片段,而是重新使用它的相同实例,并在片段生命周期中以onCreateView()
开头。关键是你不应该在你返回的片段的onCreateView()
中再次膨胀视图,因为你正在使用现有的片段实例。您需要保存并重用rootView。请参阅Vince Yuan How can I maintain fragment state when added to the back stack?的答案。
答案 1 :(得分:0)
好吧,我只需要把这段代码......
@Override
public void onResume() {
super.onResume();
edtVlBruto.setText(String.valueOf(GlobalUtil.objPedido.getVlBruto()));
edtCodPedido
.setText(String.valueOf(GlobalUtil.objPedido.getCodPedido()));
}