Экспорт данных в Google лист с Android Studio: Как перенести переменные между действиями? - PullRequest
0 голосов
/ 02 ноября 2019

Я пытаюсь применить некоторые учебники по размещению некоторых данных на листе Google благодаря системе штрих-кодов.

Идея проста: я хочу отсканировать штрих-код книги и отправить ISBN (например,scanContent = 0123456789012) на листе Google.

Мне почти удалось это сделать! Но вот что я не могу сделать из-за недостатка знаний, которые есть у меня в Java (я просто скопировал учебные пособия по разным)

Как мне сделать, чтобы экспортировать мою переменную "scanContent" в открытуюкласс "SendRequest"? Действительно, на данный момент данные, которые я отправляю в Google Sheet, «не определены». В Stackoverflow есть много справок, но мне не удается применить их к моему коду ...

Пожалуйста, помогите мне, потому что эта проблемасводит меня с ума! : '(Большое спасибо !!! Вот начало кода:

public class MainActivity extends Activity implements OnClickListener {

    string scanContent;

    @SuppressLint("ClickableViewAccessibility")
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        scanBtn = (Button) findViewById(R.id.scan_button);
        formatTxt = (TextView) findViewById(R.id.scan_format);
        contentTxt = (TextView) findViewById(R.id.scan_content);

        scanBtn.setOnClickListener(this);
    }

    private Button scanBtn;
    private TextView formatTxt, contentTxt;

    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.scan_button) {
            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) {
            scanContent = scanningResult.getContents();
            String scanFormat = scanningResult.getFormatName();
            formatTxt.setText("FORMAT : " + scanFormat);

            new SendRequest().execute();

        } else {
            Toast toast = Toast.makeText(getApplicationContext(),
                    "No scan data received!", Toast.LENGTH_SHORT);
            toast.show();
        }
    }
    public class SendRequest extends AsyncTask<String, Void, String> {

        protected void onPreExecute(){}
        @SuppressLint("WrongThread")
        protected String doInBackground(String... arg0) {

            try{
                URL url = new URL("https://script.google.com/macros/s/AKfycbxIIKqD6ksuVd0eNCVcStIXIkvLSgjty1RqaHn96pY/dev");
                JSONObject postDataParams = new JSONObject();

                contentTxt.setText("EAN : " + scanContent);
                postDataParams.put("sdata",scanContent);


                Log.e("params",postDataParams.toString());

. . .

1 Ответ

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

Если вы хотите сделать это правильно, изучите концепцию varargs и передайте аргументы непосредственно в метод doInBackground. Если вы хотите простой способ, создайте конструктор для класса SendRequest. Попробуйте это:

new SendRequest("scanContent").execute();

public class SendRequest extends AsyncTask<String, Void, String> {
    String scanContent;
    SendRequest(String scanContent){
        this.scanContent = scanContent;
    }
}

protected String doInBackground(String... arg0) {
    Log.d("SendRequest", scanContent);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...