我正在尝试获取此代码,以将搜索视图中键入的内容显示为布局的textview中的文本。但是当我运行该应用程序时,什么也没显示。
public class MainActivity extends AppCompatActivity {
TextView textview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_search);
textview = (TextView) findViewById(R.id.search_result);
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.search_menu,menu);
SearchView searchView = (SearchView) menu.findItem(R.id.search_box).getActionView();
searchView.setQueryHint("Search Here");
searchView.setIconifiedByDefault(false);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener(){
@Override
public boolean onQueryTextSubmit(String search){
return false;
}
@Override
public boolean onQueryTextChange(String search){
String result= "You have searched for "+search;
textview.setText(result);
return false;
}
});
return super.onCreateOptionsMenu(menu);
}
}
我该怎么做才能在textview中显示搜索字符串?
修改
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/search_box"
android:title="search here"
android:icon="@android:drawable/ic_menu_search"
app:actionViewClass="android.widget.SearchView"
app:showAsAction="always"/>
</menu>
当我向搜索框输入搜索查询时,它没有显示在布局的textview小部件上。
答案 0 :(得分:1)
您可能也有兴趣研究数据绑定以解决此问题:
https://developer.android.com/topic/libraries/data-binding/
在此页面上:
<TextView
android:text="@{viewmodel.userName}" />
答案 1 :(得分:0)
要更新UI对象,必须使用主线程,在代码中,您正在更新另一个线程上的textview
。尝试更改方法onQueryTextChange
以使用主线程更新您的TextView
。
@Override
public boolean onQueryTextChange(String search){
String result= "You have searched for "+search;
runOnUiThread(new Runnable() {
@Override
public void run() {
textview.setText(result);
}
});
return false;
}