java - Java Array 列表在按钮内时不会更新
问题描述
我是 Java 新手(和 stackoverflow ......),所以这可能很明显,但是当我搜索它时找不到类似的东西(如果我错过了,请不要犹豫,将解决方案链接给我!)
我正在努力尝试在一个按钮内更新我的数组列表。当我在 onSensorChanged 中使用它时,它一直说“无法解析符号 fileEntry”(我曾经在按钮外部定义它,但当我单击启动按钮时它不会更新它),它还说“变量 fileEntry 从未使用过' 在按钮内。请参阅下面的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
starting_button = (Button) findViewById(R.id.button_start);
starting_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ArrayList fileEntry = new ArrayList();
这就是我尝试使用它的地方:
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
fileEntry.add(sensorEvent.values[0] + "," + sensorEvent.values[1] + "," + sensorEvent.values[2] + "\r");
}
我想做的是每次单击开始按钮时都有一个新的 fileEntry(即清除它)。
我知道我的代码远非完美,提前抱歉!
解决方案
您应该像这样在活动类中将 ArrayList 声明为属性,以便在不同的方法中使用它:
class MainActivity extends AppCompatActivity() {
private ArrayList fileEntry;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fileEntry = new ArrayList();
starting_button = (Button) findViewById(R.id.button_start);
starting_button.setOnClickListener(new View.OnClickListener() {
}
@Override
public void onClick(View v) {
// Do something with your fileEntry
}
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
fileEntry.add(sensorEvent.values[0] + "," + sensorEvent.values[1] + "," + sensorEvent.values[2] + "\r");
}
}
您的属性的范围现在将仅限于您的类,而不仅仅是您的 onClick 方法。
推荐阅读
- javascript - 如果页面关闭,Observables 会导致内存泄漏吗?
- sql - 根据用户参数过滤 bigquery 中的行
- dns - 当我尝试将我的 VM win 10 连接到我的 VM Server 2019 本地域时出现 Azure AD 错误消息
- javascript - 使用 Selenium 自动结帐过程时出现 403
- android - 检查在 RecyclerView 中可以看到多少项目
- mysql - 从sql中的客户表中计算每个不同城市的客户数
- react-native - 不变违规:requireNativeComponent:在 UIManager 中找不到“VRTImage”
- r - R Tidyverse:结转不存在变量的值
- javascript - Vue:具有固定前缀和样式的下拉菜单
- azure - Azure DevOps 中构建管道失败时如何添加相关工作项?