Связь между Activity и Fragment для отправки значений - PullRequest
0 голосов
/ 08 июня 2018

Привет, ребята, тогда в программе, которую вы видите ниже, я должен выполнить эту серию шагов:

1) Fragment1 (Rapportini) Я иду в Activity2 (Articoli)

2) выберите элемент и вернитесь к Fragment1 (Rapportini), передав значение в качестве намерения

3) метод OnActivityResult считывает намерение и добавляет его в массив

Моя проблема в том, что метод OnActivityResult не вызывается!Почему это происходит, как я могу это решить?

Упражнение 2 (Артиколи) - Код:

  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();

Результат фрагмента (фрагмент Раппортини):

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 голосов
/ 08 июня 2018

Это довольно просто.Просто убедитесь, что у действия, содержащего RapportiniActivity (который является фрагментом), есть onActivityResult переопределено в нем так:

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

И ваш код должен работать.

0 голосов
/ 08 июня 2018

в вашем коде:

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

используйте startActivityForResult

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...