我正在尝试应用一些关于借助条形码系统在 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/