使用addToBackStack刷新edittext中的值

时间:2014-12-09 12:41:24

标签: java android android-fragments

我有两个片段,“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;
}

有人?

2 个答案:

答案 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()));
}