显示或隐藏项目ActionBar
根据文本中是否有文本EditText
or not.
所以,我做了以下事情
public class NounSearch extends android.app.Fragment
{
EditText seachEditText;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
View rootView = inflater.inflate(R.layout.nounsearchactivity, container, false);
// Intiate EditText
seachEditText =(EditText) rootView.findViewById(R.id.nounSearch);
seachEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
{
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
searchResult.Entities = new ArrayList<NounModel>();
_currentPage = 0;
categoryId = -1;
new GetNouns().execute();
return true;
}
return false;
}
});
seachEditText.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s)
{
// ...
}
public void beforeTextChanged(CharSequence s, int start, int count, int after)
{
// ...
}
public void onTextChanged(CharSequence s, int start, int before, int count)
{
getActivity().invalidateOptionsMenu();
}
});
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
super.onCreateOptionsMenu(menu, inflater);
if (seachEditText.getText().toString().length() > 0){
menu.findItem(R.id.action_search).setVisible(true);
}
else {
menu.findItem(R.id.action_search).setVisible(false);
}
}
}
但是,那ActionItem
永远不会出现。我怎样才能实现这个目标?
用于更新onCreateOptionsMenu
在片段内你需要调用setHasOptionsMenu(true);
在 - 的里面onCreate
片段的方法。不然你打电话的时候是无法更新的 getActivity().invalidateOptionsMenu();
sample:
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
EDIT:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
if(seachEditText.getText().toString().length() > 0) {
menu.findItem(R.id.action_search).setVisible(true);
}
else {
menu.findItem(R.id.action_search).setVisible(false);
}
super.onCreateOptionsMenu(menu, inflater);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)