ListView btn_updatepublic void reader(String epc) { String upc = epc; //UpcUtils.getUPC(epc); Stock s; String name = ""; String abbreviation = ""; String NickName = epc.substring(2, 4); String realName = getRealName(NickName); s = new Stock(epc, epc, realName, realName); s.setTime(FileUtil.getTimes()); s.setAbbreviation(abbreviation); //soundPoolHelper.play("happy1",false); adapter.update(s); btn_update.setText(String.valueOf(adapter.getCount())); }中的btn_update.setText为什么无效
时间: 2023-12-10 11:39:08 浏览: 47
可能是因为您没有在UI线程上更新UI。在Android中,只有UI线程才能更新UI元素。您可以尝试将更新UI元素的代码包装在runOnUiThread方法中,或使用Handler来更新UI元素。例如:
```
runOnUiThread(new Runnable() {
@Override
public void run() {
btn_update.setText(String.valueOf(adapter.getCount()));
}
});
```
或者:
```
Handler handler = new Handler(Looper.getMainLooper());
handler.post(new Runnable() {
@Override
public void run() {
btn_update.setText(String.valueOf(adapter.getCount()));
}
});
```
相关问题
public class InventoryRFID implements RfidEventsListener { @Override public void eventReadNotify(RfidReadEvents rfidReadEvents) { TagData[] tags = reader.Actions.getReadTags(1000); if (tags == null) { return; } for (final TagData tag : tags) { startBeepingTimer(); if (epcList.add(tag.getTagID())) { runOnUiThread(new Runnable() { @Override public void run() { String epc = tag.getTagID(); if (epc != null && epc.startsWith("40")) { String hexEpc = hexToAscii(epc); Log.e("tag", tag.getTagID()); reader(hexEpc); } } }); } } } public void reader(String epc) { String upc = epc; //UpcUtils.getUPC(epc); Stock s; String name = ""; String abbreviation = ""; String NickName = epc.substring(2, 4); String realName = getRealName(NickName); s = new Stock(epc, epc, realName, realName); s.setTime(FileUtil.getTimes()); s.setAbbreviation(abbreviation); adapter.update(s); btn_update.setText(String.valueOf(adapter.getCount())); }Attempt to invoke virtual method 'void com.ives.upcrfid_zebra.StockInListViewAdapter.update(com.ives.upcrfid_zebra.entiry.Stock)' on a null object reference怎么修改
这个错误通常是因为 `adapter` 为空引起的。因此,你需要检查 `adapter` 是否已经被初始化并且不为空。如果 `adapter` 是 null,那么你需要在使用它之前初始化它。例如:
```
private StockInListViewAdapter adapter;
// 初始化 adapter
adapter = new StockInListViewAdapter(this, R.layout.stock_item, new ArrayList<Stock>());
listView.setAdapter(adapter);
public void reader(String epc) {
// ...
if (adapter != null) {
adapter.update(s);
btn_update.setText(String.valueOf(adapter.getCount()));
}
// ...
}
```
# -*- coding: UTF-8 -*- from lib2to3.pgen2 import driver from appium import webdriver from appium.webdriver.common.appiumby import AppiumBy el1 = driver.find_element(by=AppiumBy.ACCESSIBILITY_ID, value="通讯录") el1.click() el2 = driver.find_element(by=AppiumBy.XPATH, value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.ListView/android.widget.FrameLayout[3]/android.widget.RelativeLayout") el2.click() el3 = driver.find_element(by=AppiumBy.XPATH, value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.view.ViewGroup/android.view.ViewGroup/androidx.recyclerview.widget.RecyclerView/android.view.ViewGroup[1]/android.widget.TextView") el3.click() el4 = driver.find_element(by=AppiumBy.XPATH, value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.view.ViewGroup/android.view.ViewGroup/androidx.recyclerview.widget.RecyclerView/android.view.ViewGroup[8]") el4.click() el5 = driver.find_element(by=AppiumBy.XPATH, value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.view.ViewGroup/android.view.ViewGroup/androidx.recyclerview.widget.RecyclerView/android.view.ViewGroup[11]") el5.click()
根据你提供的代码,看起来你使用了 `lib2to3.pgen2.driver` 模块中的 `find_element` 方法。但是,`lib2to3.pgen2.driver` 模块实际上并没有这个方法,所以出现了 `AttributeError`。
我猜测你可能是想使用 Appium 的 `driver.find_element` 方法。如果是这样的话,你需要更改你的代码来正确导入 `appium.webdriver` 模块并使用它的 `driver` 属性。具体的修改如下:
```python
# -*- coding: UTF-8 -*-
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
# 创建 Appium driver
desired_caps = {}
desired_caps['platformName'] = 'Android'
# 添加其他的 desired capabilities 选项...
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# 执行测试操作
el1 = driver.find_element(by=AppiumBy.ACCESSIBILITY_ID, value="通讯录")
el1.click()
el2 = driver.find_element(by=AppiumBy.XPATH, value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.ListView/android.widget.FrameLayout[3]/android.widget.RelativeLayout")
el2.click()
el3 = driver.find_element(by=AppiumBy.XPATH, value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.view.ViewGroup/android.view.ViewGroup/androidx.recyclerview.widget.RecyclerView/android.view.ViewGroup[1]/android.widget.TextView")
el3.click()
el4 = driver.find_element(by=AppiumBy.XPATH, value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.view.ViewGroup/android.view.ViewGroup/androidx.recyclerview.widget.RecyclerView/android.view.ViewGroup[8]")
el4.click()
el5 = driver.find_element(by=AppiumBy.XPATH, value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.view.ViewGroup/android.view.ViewGroup/androidx.recyclerview.widget.RecyclerView/android.view.ViewGroup[11]")
el5.click()
# 关闭 driver
driver.quit()
```
注意,这里我使用了 `appium.webdriver` 模块的 `webdriver.Remote` 方法来创建 driver,然后使用 `driver.find_element` 方法来查找元素。最后,在测试结束后,我也关闭了 driver。你需要根据你的具体情况修改代码中的 `desired_caps` 和元素定位方式等内容。