-1

I'm creating an app right now and I'm a little confused. I have 2 files, MainActivity and QrCodeGernerator. Im am doing this for a data collection app. The user inputs data into the MainActivity and the shares it with the QrCodeGenerator which then creates a qr code. The issue is the qr code keeps being null. Any help would be appreciated. MainACtivity is first(I've included snipets related to the question not my whole code)

 public static String finalOutput;

 public void output (View view) {
        EditText editSN = findViewById(R.id.editSN);
        EditText editTN = findViewById(R.id.editTN);
        RadioGroup alliance = findViewById(R.id.alliance);
        RadioButton allianceI = findViewById(alliance.getCheckedRadioButtonId());
        RadioGroup driverStation = findViewById(R.id.driverStation);
        RadioButton driverStationI = findViewById(driverStation.getCheckedRadioButtonId());
        EditText matchNumber = findViewById(R.id.editMatchNumber);
        RadioGroup driverOff = findViewById(R.id.crossLine);
        RadioButton driveOffI = findViewById(driverOff.getCheckedRadioButtonId());
        EditText autoPowerPortBottom = findViewById(R.id.editAutoPowerPortBottom);
        EditText autoPowerPortOuter = findViewById(R.id.editAutoPowerPortOuter);
        EditText autoPowerPortInner = findViewById(R.id.editAutoPowerPortInner);
        EditText autoDroppedPowerCells = findViewById(R.id.editAutoDroppedPowerCells);
        RadioGroup autoConflict = findViewById(R.id.autoConflict);
        RadioButton autoConflictS = findViewById(autoConflict.getCheckedRadioButtonId());
        EditText PowerPortBottom = findViewById(R.id.editPowerPortBottom);
        EditText PowerPortOuter = findViewById(R.id.editPowerPortOuter);
        EditText PowerPortInner = findViewById(R.id.editPowerPortInner);
        EditText droppedPowerCells = findViewById(R.id.editDroppedPowerCells);
        CheckBox boxTrench = findViewById(R.id.boxTrench);
        CheckBox boxCenter = findViewById(R.id.boxCenter);
        CheckBox boxOnTheirSide = findViewById(R.id.boxOnTheirSide);
        RadioGroup climb = findViewById(R.id.climb);
        RadioButton climbS = findViewById(climb.getCheckedRadioButtonId());
        RadioGroup multiClimb = findViewById(R.id.multiClimb);
        RadioButton multiClimbS = findViewById(multiClimb.getCheckedRadioButtonId());
        RadioGroup driverSkill = findViewById(R.id.driverSkill);
        RadioButton driverSkillI = findViewById(driverSkill.getCheckedRadioButtonId());
        RadioGroup focusOnDefense = findViewById(R.id.groupFocusOnDefense);
        RadioButton focusOnDefenseI = findViewById(focusOnDefense.getCheckedRadioButtonId());
        EditText beached = findViewById(R.id.editBeached);
        EditText disabled = findViewById(R.id.editDisabled);
        EditText died = findViewById(R.id.editDied);
        EditText fouls = findViewById(R.id.editFouls);
        EditText techFouls = findViewById(R.id.editTechFoul);
        EditText notes = findViewById(R.id.editNotes);

        Button submit = findViewById(R.id.submit);


        String[] output = new String[]{
                editSN.getText().toString(),
                editTN.getText().toString(),
                allianceI.getText().toString(),
                driverStationI.getText().toString(),
                matchNumber.getText().toString(),
                driveOffI.toString(),
                autoPowerPortBottom.getText().toString(),
                autoPowerPortOuter.getText().toString(),
                autoPowerPortInner.getText().toString(),
                autoDroppedPowerCells.getText().toString(),
                autoConflictS.getText().toString(),
                PowerPortBottom.getText().toString(),
                PowerPortOuter.getText().toString(),
                PowerPortInner.getText().toString(),
                droppedPowerCells.getText().toString(),
                climbS.getText().toString(),
                multiClimbS.toString(),
                disabled.getText().toString(),
                died.getText().toString(),
                fouls.getText().toString(),
                techFouls.getText().toString(),
                notes.getText().toString()
        };

        for (int i = 0; i < output.length; i++) {
            finalOutput = finalOutput.concat(output[i].toString());
        }
    }

and then qr code

private String test;

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

    barcode=findViewById(R.id.barCode);
    textView=findViewById(R.id.dataText);
    test=MainActivity.finalOutput;


    String data_in_code=test;
    MultiFormatWriter multiFormatWriter=new MultiFormatWriter();
    try{
        BitMatrix bitMatrix=multiFormatWriter.encode(data_in_code, BarcodeFormat.QR_CODE,200,200);
        BarcodeEncoder barcodeEncoder=new BarcodeEncoder();
        Bitmap bitmap=barcodeEncoder.createBitmap(bitMatrix);
        barcode.setImageBitmap(bitmap);
Edric
  • 24,639
  • 13
  • 81
  • 91

1 Answers1

1

I think you want to send Data from one Screen to the other?

https://developer.android.com/training/basics/firstapp/starting-activity

Take a look at Intents, you can use them to start other Activities (go to other screens) and also pass data between screens as shown in the link

In your case you just add String extras or a collection of Strings as one extra to the Intent

Merthan Erdem
  • 5,598
  • 2
  • 22
  • 29
  • Okay. Right now i already have that. I have an intent that switches the view. It works. The issue is the QR code generator wont generate a qr code because there is no data. Now im trying to remedy that.Would an intent fix that? – HunterBCodes Jan 17 '20 at 23:32
  • Yes you put the data in there as an extra and then receive it in the other activity using getIntent() Look at the link, you can find examples there – Merthan Erdem Jan 17 '20 at 23:34