taskPerform = new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(Void... voids) { try { if (rfd == 1) { reader.Actions.Inventory.perform(); isStarted = true; } else { reader.Actions.TagLocationing.Perform(tag, null, null); isStarted = true; } Log.e("yu", "1"); isOpenRead = true; } catch (InvalidUsageException | OperationFailureException e) { e.printStackTrace(); //Log.e("handle_trigger_error", e.getMessage()); } return null; } };Inventory为空怎么解决
时间: 2024-02-10 07:15:44 浏览: 116
在这个代码片段中,如果 `reader.Actions.Inventory` 为空,你需要确保 `reader` 对象已经实例化并正确初始化。如果你已经实例化了 `reader` 对象,但仍然遇到 `Inventory` 为空的问题,那么可能是因为它没有被正确地设置。
你可以尝试添加以下代码:
```
if (reader.Actions.Inventory == null) {
reader.Actions.Inventory = new Inventory();
}
```
这会确保 `Inventory` 对象被正确地初始化。如果你在其他地方重新将 `Inventory` 对象赋值为 `null`,那么你需要检查并确保你的代码逻辑正确,以避免这种情况的发生。
此外,你也可以在调用 `perform()` 方法之前检查 `Inventory` 对象是否为空,以避免空指针异常的发生:
```
if (reader.Actions.Inventory != null) {
reader.Actions.Inventory.perform();
}
```
这将确保只有在 `Inventory` 对象不为空时才调用 `perform()` 方法。
相关问题
taskPerform = new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(Void... voids) { try { if (rfd == 1) { reader.Actions.Inventory.perform(); isStarted = true; } else { reader.Actions.TagLocationing.Perform(tag, null, null); isStarted = true; } Log.e("yu", "1"); isOpenRead = true; } catch (InvalidUsageException | OperationFailureException e) { e.printStackTrace(); //Log.e("handle_trigger_error", e.getMessage()); } return null; } };有什么问题
这段代码中没有明显的问题。它创建了一个异步任务对象,其中包含了执行RFID读取标签操作的代码。在执行这个异步任务时,如果rfd的值为1,则执行库存操作;否则,执行标签定位操作。如果操作成功,isStarted变量将设置为true。最后,isOpenRead变量也将设置为true。如果出现异常,堆栈跟踪信息将被打印出来。这段代码的作用是异步执行RFID读取标签的操作,避免阻塞应用程序的UI线程。
Button inventoryButton = findViewById(R.id.inventory_button);inventoryButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (isFastClick()) { showLoadToast(); goToMainActivity(); loadExcelFile(); } }});private boolean isFastClick() { return ButtonOnCilk.isFastViewClick(inventoryButton, getBaseContext());}private void showLoadToast() { CustomToast.showLoad(HomeActivity.this, getString(R.string.load));}private void goToMainActivity() { Intent intent = new Intent(getApplicationContext(), MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent);}private void loadExcelFile() { new AsyncTask<Void, Void, List<String>>() { @Override protected List<String> doInBackground(Void... voids) { return readExcelFile(); } @Override protected void onPostExecute(List<String> data) { showDataInListView(data); } }.execute();}private void showDataInListView(List<String> data) { listView = findViewById(R.id.rv_list); if (listView != null) { ArrayAdapter<String> adapter = new ArrayAdapter<>(HomeActivity.this, android.R.layout.simple_list_item_1, data); listView.setAdapter(adapter); }}没有读取到excel中的数据
可能是因为您的代码中没有提供 `readExcelFile()` 函数的实现。您需要编写一个函数来读取 Excel 文件并返回数据列表。可以使用 Apache POI 等库来读取 Excel 文件。
您可以尝试以下代码作为 `readExcelFile()` 函数的实现:
```
private List<String> readExcelFile() {
List<String> data = new ArrayList<>();
try {
InputStream inputStream = getAssets().open("example.xlsx"); // 替换为自己的 Excel 文件名
Workbook workbook = WorkbookFactory.create(inputStream);
Sheet sheet = workbook.getSheetAt(0);
for (Row row : sheet) {
for (Cell cell : row) {
data.add(cell.toString());
}
}
workbook.close();
} catch (IOException | InvalidFormatException e) {
e.printStackTrace();
}
return data;
}
```
这个函数将从 assets 文件夹中读取名为 `example.xlsx` 的 Excel 文件,并将其中的所有数据添加到一个字符串列表中,然后将其返回。您可以在 `onPostExecute()` 函数中调用此函数,以获取 Excel 文件中的数据。
阅读全文