java - 使用 android studio 将数据导出到 google 工作表 : How to transfer variables between activities?

标签 java android variables export

我正在尝试应用一些关于借助条形码系统在 Google 工作表上发布一些数据的教程。

这个想法很简单:我想扫描图书条形码并将 ISBN(例如 scanContent = 0123456789012)发送到 Google 表格。

我几乎已经成功了! 但有一点是我无能为力,因为我缺乏 Java 知识(我只是复制了不同的教程)

我应该如何将变量“scanContent”导出到公共(public)类“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());

. . .

最佳答案

如果你想正确地做到这一点,请研究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);
}

关于java - 使用 android studio 将数据导出到 google 工作表 : How to transfer variables between activities?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58670709/

相关文章:

java - Weblogic 托管服务器未正确记录错误

java - tablecell 中的进度条和标签

c# - Java 的 Serializable 或 Cloneable 等标记接口(interface)的设计是否在 C# 中得到了发展?

android - Visual Studio 2015 Android项目多线程编译

variables - 信号与变量

python - Tic-Tac-Toe 游戏 Python 的 for 循环中的迭代是如何工作的?

java - Gson 将失败的字段解析为空

android - Android Studio 中的 list 合并

java - Android Studio Gradle 预构建步骤

javascript - Chart.JS 全局选项