gpt4 book ai didi

java - 如何在Android中调用与MainActivity不同的Activity的方法?

转载 作者:行者123 更新时间:2023-12-02 12:32:38 28 4
gpt4 key购买 nike

我正在使用 Google 电子表格制作 Android 应用程序。我正在扫描图书中的条形码,使用 Google Books API 查找信息,然后需要将此信息保存到工作表中。

以下代码位于MainActivity中:

private class GetBookInfo extends AsyncTask <String, Void, String> {

@Override
protected String doInBackground(String... urls) {
// make Call to the url
makeCall("https://www.googleapis.com/books/v1/volumes?" +
"q=isbn:" + ean_content + "&AIzaSyCpYez5556X4UzPV6rF4kkspj9DsCs_Q_c");

//print the call in the console
System.out.println("https://www.googleapis.com/books/v1/volumes?" +
"q=isbn:" + ean_content + "&AIzaSyCpYez5556X4UzPV6rF4kkspj9DsCs_Q_c");

return null;
}

@Override
protected void onPreExecute() {
// we can start a progress bar here
}

@Override
protected void onPostExecute(String result) {

String ruta = save_cover(getApplicationContext(), title, book_cover);
Intent intent = new Intent(MainActivity.this, Spreadsheets.class);
finish();
startActivity(intent);

}
}

在此代码之后,我有 public void makeCall(String stringURL)。它搜索书名、作者、日期、描述和书的类别。

我还有另一项 Activity :

public class Spreadsheets extends Activity implements EasyPermissions.PermissionCallbacks

在此 Activity 中,我将以下代码写入 Google 表格:

 public void setDataToApi (String title, String author, String date, String category, String description) throws IOException {

String spreadsheetId = "1Gg121IjABekfSTKXg_TQzJgg4boxvYIQnmf_K4YDboo";
String range = "Sheet1!A2:E2";

List<List<Object>> values = new ArrayList<>();
List<Object> data1 = new ArrayList<>();
data1.add(title);
data1.add(author);
data1.add(date);
data1.add(category);
data1.add(description);

values.add(data1);
ValueRange valueRange = new ValueRange();
valueRange.setMajorDimension("ROWS");
valueRange.setRange(range);
valueRange.setValues(values);

UpdateValuesResponse response = this.mService.spreadsheets().values().update(spreadsheetId, range, valueRange)
.setValueInputOption("RAW")
.execute();

System.out.printf("%d cells updated.", response.getUpdatedCells());

}

我的问题是,我试图在 Intent 之前从 onPostExecute 方法调用 setDataToApi 方法,但它根本不起作用。非常感谢!

最佳答案

您不能从另一个 Activity 的外部调用该 Activity 的方法。在 Intent 实际分派(dispatch)之前,其他 Activity 尚未运行。您要么需要

  1. GetBookInfo 移至 SpreadSheets Activity,以便可以直接在 Activity 中执行 onPostExecute。这需要通过 Intent 上的额外内容传递书籍的 ID。或者...
  2. GetBookInfo 保留在 MainActivity 中的位置,并通过 Intent 上的 extra 传递所有查找到的书籍详细信息。

关于java - 如何在Android中调用与MainActivity不同的Activity的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45219054/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com