Passing array dari class a ke class b

Saya punya activity form kuis (class A) yang berisi pertanyaan dan setiap pertanyaannya mengandung 2 jawab yes dan no dan setiap jawaban mengembalikan nilai yang disimpan di array. Lalu di akhir kuis tersebut array nya ingin saya passing ke class B untuk di proses dan menghasilkan nilai. Setiap kembali ke menu utama dan mengulang kuis, array akan diclear terlebih dahulu baru menyimpan elemen baru sesuai jawaban yang baru. Bagaimana cara passing array dari class A ke class B agar saat melakukan pengulangan kuis, array di class B terupdate sesuai dengan yang ada di class A?

Ini codingan class A dan B nya, saat saya debug ternyata array yang terpassing ke class B tidak terupdate/masih menyimpan array lama.

Class A

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_screening);

        toolbar_scr = findViewById(R.id.toolbarScreening);
        toolbar_scr.setTitle("Screening");

        arrayDS.clear();
        arrayFT.clear();

        countQuestion = findViewById(R.id.qNumber);
        textQuestion = findViewById(R.id.qText);
        optYes = findViewById(R.id.btnYes);
        optNo = findViewById(R.id.btnNo);

        optYes.setOnClickListener(this);
        optNo.setOnClickListener(this);

        firestore = FirebaseFirestore.getInstance();

        getQuestionList();
    }

    private void getQuestionList() {
        questionList = new ArrayList<>();

        firestore.collection("PTSDProject").document("Screening")
                .collection("Question").get().addOnCompleteListener(new
                OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                if (task.isSuccessful()){
                    QuerySnapshot questions = task.getResult();

                    for (QueryDocumentSnapshot doc: questions){
                        questionList.add(new Question(doc.getString("textQuestion"),
                                doc.getString("optYes"),
                                doc.getString("optNo"),
                                doc.getString("group"),
                                Double.valueOf(doc.getString("valueYes"))
                        ));
                    }

                    setQuestion();

                } else {
                    Toast.makeText(ScreeningActivity.this,
                    task.getException().getMessage(), Toast.LENGTH_SHORT).show();
                }
            }
        });

    }

    private void setQuestion() {
        numQuestion = 0;

        textQuestion.setText(questionList.get(numQuestion).getTextQuestion());
        optYes.setText(questionList.get(numQuestion).getOptYes());
        optNo.setText(questionList.get(numQuestion).getOptNo());

        countQuestion.setText(String.valueOf(1) + "/" +
        String.valueOf(questionList.size()));
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btnYes:
                arrayDS.add(questionList.get(numQuestion).getValueYes());
                arrayFT.add(questionList.get(numQuestion).getValueYes());
                break;

            case R.id.btnNo:
                arrayFT.add(0.0);
                break;

            default:
        }

        changeQuestion();
        Log.d("ArrayDS", String.valueOf(arrayDS));
        Log.d("ArrayFT", String.valueOf(arrayFT));
    }

    private void changeQuestion() {
        if (numQuestion < questionList.size() - 1){

            numQuestion++;

            textQuestion.setText(questionList.get(numQuestion).getTextQuestion());
            optYes.setText(questionList.get(numQuestion).getOptYes());
            optNo.setText(questionList.get(numQuestion).getOptNo());

            countQuestion.setText(String.valueOf(numQuestion + 1) + "/" +
            String.valueOf(questionList.size()));

        } else {

            Intent intentMove = new Intent(this, ResultActivity.class);
            startActivity(intentMove);
            finish();

        }
    }

    public static ArrayList<Double> returnDataDS(){
        return (arrayDS);
    }

    public static ArrayList<Double> returnDataFT(){
        return (arrayFT);
    }

Class B private static ArrayList<Double> arrayDS = classA.returnDataDS();

private static double inferensiDS(double x, double y){ return (x * y) + (x * (1 - y) + ((1 - x) * y)); }

public static double screeningDS(){ Log.d("getDS", String.valueOf(arrayDS)); double hasilDS; if (arrayDS.size() <= 1){ hasilDS = 0; return hasilDS; } else { double temp = 0; temp = inferensiDS(arrayDS.get(0), arrayDS.get(1)); for (int i = 2; i < arrayDS.size(); i++){ temp = inferensiDS(temp, arrayDS.get(i)); }

hasilDS = temp * 100; return hasilDS; }

}

avatar ayuiu02
@ayuiu02

1 Kontribusi 0 Poin

Diperbarui 3 tahun yang lalu

2 Jawaban:

masukkan data dalam intent saat mulai ResultActivity.

<pre> Intent intentMove = new Intent(this, ResultActivity.class); intentMovee.putExtra("dataDS", returnDataDS());
startActivity(intentMove); finish(); </pre>

class B dalam method onCreated() baca data dalam intent:

<pre> arrayDS = getIntent().getDoubleArrayExtra("dataDS"); </pre>

avatar jajanjawa
@jajanjawa

28 Kontribusi 12 Poin

Dipost 3 tahun yang lalu

Tanggapan

Sebelumnya terima kasih Mas sudah meluangkan waktu buat jawab.. Kalau kasusnya intent move itu buat pindah ke class C gimana ya Mas? Jadi yang punya UI itu cuma class A dan C, class B cuma dipake buat numpang ngitung. Dari class A UInya move ke kelas C, tapi proses passing datanya dari class A passing array ke class B buat dihitung lalu hasil hitungannya baru dipassing ke class C. Itu gimana ya Mas? Saya bingung banget searching nya gimana hehe

rekomendasinya sekarang pakai Android Jetpack Komponen Arsitektur. gunakan ViewModel, baca-baca <a href='https://developer.android.com/topic/libraries/architecture/viewmodel'>disini</a>

avatar jajanjawa
@jajanjawa

28 Kontribusi 12 Poin

Dipost 3 tahun yang lalu

Tanggapan

Oke!! tengkyu Mas rekomendasinya, saya baca sumbernya

Login untuk ikut Jawaban