如何从片段中创建的按钮中获取文本,以在用户单击工具栏上的SearchView图标时显示出来。到目前为止,当在片段中单击工具栏上的搜索按钮时,它可以正常工作,因此用户可以使用搜索栏进行键入,但是如何获得它,所以当用户键入某些内容时,图像按钮将根据每个按钮的文字。
我的主xml 如下:
<item
android:id="@+id/search_button"
android:icon= "@drawable/ic_search_black_24dp"
android:title="Search"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction= "always"/>
在我的片段类中,我尝试这样做:
private SearchView searchView = null;
private SearchView.OnQueryTextListener queryTextListener;
List<String> textContent = new ArrayList();
public Other() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_other, container, false);
//Small example
Button home1 =(Button) view.findViewById(R.id.BeefRendang);
Button home2 =(Button) view.findViewById(R.id.AyamMasakMerah);
home1.setOnClickListener(this);
home2.setOnClickListener(this);
//I tried using a arraylist called text content to get button text
textContent.clear();
textContent.add((String) home1.getText());
textContent.add((String) home2.getText());
return view;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.main, menu);
MenuItem searchItem = menu.findItem(R.id.search_button);
SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
if (searchItem != null) {
searchView = (SearchView) searchItem.getActionView();
}
if (searchView != null) {
searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
queryTextListener = new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextChange(String newText) {
Log.i("onQueryTextChange", newText);
return true;
}
@Override
public boolean onQueryTextSubmit(String query) {
Log.i("onQueryTextSubmit", query);
for(String text : textContent) {
if(text.contains(query)) {
return true ;
}
}
return false;
}
};
searchView.setOnQueryTextListener(queryTextListener);
}
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.search_button:
// Not implemented here
return false;
default:
break;
}
searchView.setOnQueryTextListener(queryTextListener);
return super.onOptionsItemSelected(item);
}
//On click method
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.BeefRendang:
Intent in = new Intent(getActivity(), BeefRendang.class);
startActivity(in);
break;
case R.id.AyamMasakMerah:
Intent in2 = new Intent(getActivity(), AyamMasakMerah.class);
startActivity(in2);
break;
}
在图像按钮xml 中,它看起来像这样:
<!-- Beef Rendang-->
<Button
android:id="@+id/BeefRendang"
android:layout_width="match_parent"
android:layout_height="140dp"
android:layout_marginLeft="7dp"
android:layout_marginTop="1dp"
android:layout_marginRight="7dp"
android:background="@drawable/beefrendangcard"
android:text="Beef Rendang"
android:textSize="0sp"
android:scaleType="fitStart" />
<!-- Ayam Masak Merah -->
<Button
android:id="@+id/AyamMasakMerah"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginLeft="7dp"
android:layout_marginTop="1dp"
android:layout_marginRight="7dp"
android:background="@drawable/ayammasakmerahcard"
android:text="Ayam Masak Merah"
android:textSize="0sp"
android:scaleType="fitStart" />