Activity和Fragment之间的通信用于发送值

时间:2018-06-08 07:09:03

标签: java android android-fragments android-activity

大家好,然后在你看到的程序中,我应该执行以下一系列步骤:

1)Fragment1(Rapportini)我去了Activity2(Articoli)

2)选择一个元素并返回Fragment1(Rapportini),将值作为意图传递

3)OnActivityResult方法读取意图并将其添加到arraylist

我的问题是没有调用OnActivityResult方法!为什么会发生这种情况,我该如何解决?

活动2(Articoli) - 代码:

  Articolo a = (Articolo) ArticoliRicerca.get(position);
                Intent tabRapportini = new Intent(ArticoliActivity.this, RapportiniActivity.class);
                tabRapportini.putExtra("articoloselezionato", a);
                setResult(ArticoliActivity.RESULT_OK,tabRapportini);
                System.out.println("\n  Hai fatto tap  \n");
                finish();

片段结果(Rapportini Fragment):

public class RapportiniActivity extends Fragment {


    private View view;
    private ArrayList ArticoloSelezionati = new ArrayList();

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        view = (View) inflater.inflate(R.layout.activity_rapportini, container, false);
        return view;
    }

    @Override
    public void onViewCreated(final View view, Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        final Button btnGeneraRapportino = (Button) view.findViewById(R.id.buttongenera_rapportino);
        final Button btnAggiungiArticoli = (Button) view.findViewById(R.id.button_inserimento_articoli);
        final EditText txtNote = (EditText) view.findViewById(R.id.EditText_Note);


        btnAggiungiArticoli.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {

                Intent articoliintent = new Intent(RapportiniActivity.this.getActivity(), ArticoliActivity.class);
                startActivity(articoliintent);

            }
        });

        //Configuro la funzione Listener sul login button
        btnGeneraRapportino.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                //Prima di procedere con la generazione del rapportino è necessario controllare che le note siano inserite
                if (txtNote.getText().toString().length() > 0) {
                    Rapportino r = new Rapportino();
                    String ImageBase64 = r.GeneraRapportinoPrivato(txtNote.getText().toString());
                    try {
                        //byte[] decodedString = Base64.decode(ImageBase64, Base64.DEFAULT);
                        //System.out.println("\n Decode String: "+decodedString);
                        //Bitmap bp = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
                        //img.setImageBitmap(bp);
                    } catch (Exception ex) {
                        System.out.print("Errore: " + ex);
                    }
                } else {
                    Support.Notification(RapportiniActivity.this.getActivity(), "Attenzione", "Non hai inserito le note");
                }
            }
        });


    }


    /*  Tipologie di result code:
         1) Articolo

    */

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == 1) {
            System.out.println("\n Hai selezionato un articolo");
            Articolo a = (Articolo) data.getSerializableExtra("articoloselezionato");
            ArticoloSelezionati.add(a);

        }
        System.out.println("\n Articolo selezionati: " + ArticoloSelezionati.size());
    }


}

2 个答案:

答案 0 :(得分:0)

你的代码中的

Intent articoliintent = new Intent(RapportiniActivity.this.getActivity(), ArticoliActivity.class);
startActivity(articoliintent);

使用startActivityForResult

答案 1 :(得分:0)

这很简单。只需确保包含RapportiniActivity的活动(这是一个片段)已在其中覆盖onActivityResult,如下所示:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
}

您的代码应该有效。