我的应用程序中有一个按钮(一个按钮)和一个textview(文本)。在单击按钮之前,textview文本始终为“开始搜索”。但是在单击按钮之后,将调用一个函数(scanning())。执行该功能需要花费一些时间。因此,我希望在单击按钮之后到获得函数结果之前的时间之间,texview文本为“请稍候”。得到函数结果后,textview文本将更改为“ Found”或“ Not Found”。
但是问题是,它从不显示“请稍候”。单击按钮后,它会显示“开始搜索”,直到获得功能结果为止。
如何在文本视图上显示“请稍候”,直到单击按钮??后从功能获得结果?
Button button = (Button) findViewById(R.id.search);
TextView text = (TextView) findViewById(R.id.searchR);
text.setText("Start Search");
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
text.setText("Please Wait");
boolean res=scanning();
if(res==true)
text.setText("Found");
else text.setText("Not Found");
}
});
XML部分:
<Button
android:id="@+id/search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="60dp"
android:layout_marginLeft="60dp"
android:layout_marginTop="30dp"
android:text="Search"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/searchR"
android:layout_width="0dp"
android:layout_height="34dp"
android:layout_marginStart="97dp"
android:layout_marginLeft="97dp"
android:layout_marginTop="30dp"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/search"
app:layout_constraintTop_toTopOf="parent" />
在扫描部分,我使用UUID搜索了BLE设备。如果找到该设备,则返回true,否则返回false;
答案 0 :(得分:1)
在将文本更改为“请稍候”之后并在调用let cap = new cv.VideoCapture(video);
video.height = video.videoHeight;
video.width = video.videoWidth;
console.log(height, width); // this outputs 480,640
let src = new cv.Mat(height, width, cv.CV_8UC4);
let dst = new cv.Mat(height, width, cv.CV_8UC4);
let gray = new cv.Mat();
之前引入一小段延迟。
scanning()
编辑:根据您的代码,可能需要将变量声明为静态或全局变量,以使其起作用。
答案 1 :(得分:0)
我在您的代码中发现了一些错误。
您要更改Button的文本,而不是TextView。
public void onClick(View v) {
text.setText("Please Wait");
boolean res=scanning();
if(res==true)
but1.setText("Found");
else but1.setText("Not Found");
}
这里
but1.setText
应替换为
text.setText
答案 2 :(得分:0)
写外部方法来更改文本, 例如:
public void onClick(View v)
{
changeText("Please Wait");
boolean res = scanning();
if (res) // (res == true) is unnecessary, you can use like this
changeText("Found");
else changeText("Not Found");
}
private void changeText(string s)
{
text.setText(s);
}