Android Studio: как сохранить переменные из одного файла Java в другой - PullRequest
0 голосов
/ 03 ноября 2019

Я разрабатываю приложение, которое преобразует отсканированные данные (штрих-код) в данные GoogleSheet, и пытаюсь перенести номер штрих-кода (из Page2.java) в другой файл Java (ListItem.java)

Iувидел, что обычный способ сделать это - создать намерения. Я так и сделал. Но тост, который я вставил в ListItem.java, вместо отсканированного номера дает мне «ноль» (например, 0123456789012)

Пожалуйста, вы можете сказать мне, где я ошибаюсь? Большое вам спасибо!

1-й код (Page2.java, где я получаю "scanContent2", переменная мне нужна):

public class Page2 extends Activity implements OnClickListener {

    @SuppressLint("ClickableViewAccessibility")
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.page2);
        scanBtn2 = (Button) findViewById(R.id.scan_button2);

        scanBtn2.setOnClickListener(this);
    }

    public Button scanBtn2;
    public String scanContent2;

    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.scan_button2) {
            IntentIntegrator scanIntegrator = new IntentIntegrator(this);
            scanIntegrator.initiateScan();
        }
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent intent) {

        IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
        if (scanningResult != null) {
            scanContent2 = scanningResult.getContents();

            Intent intenta = new Intent(getApplicationContext(),ListItem.class);
            intenta.putExtra("theScanContent2", scanContent2);
            startActivity(intenta);

        } else {
            Toast toast = Toast.makeText(getApplicationContext(),
                    "No scan data received!", Toast.LENGTH_SHORT);
            toast.show();
        }
    }
}

2-й код (ListItem.java, где я получаю"ноль" на тосте):

public class ListItem extends AppCompatActivity {

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

        String scanContent2 = getIntent().getStringExtra("theScanContent");

        Toast toast = Toast.makeText(getApplicationContext(),
                "BarCode number: " + scanContent2, Toast.LENGTH_SHORT);
        toast.show();

    }
}

1 Ответ

0 голосов
/ 03 ноября 2019

В Listitem.java в следующей строке

String scanContent2 = getIntent().getStringExtra("theScanContent");

Вы пытаетесь получить строку с ключом theScanContent , в то время как вы помещаете scanContent2 с помощьюключ theScanContent2 в Page2.java в строке

intent.putExtra("theScanContent2", scanContent2);

Убедитесь, что ключи одинаковы для намерения, при этом вводя данные в намерение и получая доступ к данным изнамерение избежать получения нулевых результатов.

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