SeekBar seekBar_x = findViewById(R.id.seekBar_x); seekBar_x.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { // 根据不同的位置发送不同的字符型数字 switch (seekBar.getId()) { case R.id.seekBar_x: new SendDataTask().execute('x' + String.valueOf(progress)); break; case R.id.seekBar_y: new SendDataTask().execute('y' + String.valueOf(progress)); break; // 这里可以添加更多的位置 } } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); private class SendDataTask extends AsyncTask<String, Void, Void> { @Override protected Void doInBackground(String... params) { String progressStr = params[0]; // 将进度值发送到已连接的端口 out.println(progressStr); return null; } }
时间: 2024-02-14 22:35:58 浏览: 160
带数字进度的seekbar
4星 · 用户满意度95%
看起来这段代码是为一个带有两个 SeekBar 的界面编写的。当 SeekBar 的进度发生变化时,会根据 SeekBar 的 ID 发送不同的字符型数字到一个已连接的端口。
这段代码本身没有明显的问题,但是如果出现闪退,可能是由于以下原因之一:
1. 缺少布局文件中对应的 SeekBar 控件,导致 findViewById(R.id.seekBar_x) 返回 null,从而触发了 NullPointerException。
2. 缺少网络权限或者网络连接导致无法连接到指定端口,从而触发了 NetworkOnMainThreadException。
3. 在 doInBackground 方法中进行 UI 操作,从而触发了 CalledFromWrongThreadException。
如果您能提供更多的错误信息,我将会更加详细的帮助您解决问题。
阅读全文