开发者社区 问答 正文

跨文件发送数据

我现在正在创建一个应用程序,我有些困惑。我有2个文件,MainActivity和QrCodeGernerator。我正在为数据收集应用程序执行此操作。用户将数据输入MainActivity并与QrCodeGenerator共享,然后QrCodeGenerator创建一个qr代码。问题是二维码始终为空。任何帮助,将不胜感激。首先是MainACtivity(我提供了与问题有关的代码段,而不是我的整个代码)


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

然后是二维码

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

展开
收起
Puppet 2020-01-18 10:24:15 491 分享 版权
1 条回答
写回答
取消 提交回答
  • 我认为您想将数据从一个屏幕发送到另一个屏幕?

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

    看一下Intent,您可以使用它们启动其他活动(转到其他屏幕),还可以在屏幕之间传递数据,如链接所示。

    在您的情况下,您只需向Intent添加额外的String或String的集合即可

    2020-01-18 10:24:26
    赞同 展开评论
问答地址: