【发布时间】:2015-08-30 06:14:14
【问题描述】:
我有一个以viewpager 和 4 个fragments 为页面的活动。
在我需要处理后退按钮按下的片段中,我这样做:
public void setBackButtonAction(final View view)
{
//view is root view of fragment
view.setFocusableInTouchMode(true);
view.setOnKeyListener(new View.OnKeyListener()
{
@Override
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK)
{
if (currentView == VIEW_MODE_ALL_CAT)
{
return false;
}
else if (currentView == VIEW_MODE_THIS_CAT)
{
currentView = VIEW_MODE_ALL_CAT;
// do something
return true;
}
}
return false;
}
});
}
到目前为止一切顺利,这按预期工作。
我在这个片段中有一个EditText,我需要将它连接到一个适配器以过滤结果,我这样做:
public void setSearchFilterListener()
{
searchFilter.addTextChangedListener(new TextWatcher()
{
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after)
{
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{
mAdapter.getFilter().filter(s);
}
@Override
public void afterTextChanged(Editable s)
{
}
});
}
这也按预期工作。
但是如果我使用这个EditText,然后按下后退按钮,我处理后退按钮的代码根本不会调用。
刚刚发生了什么?如果我打开应用程序并按下返回按钮,则会调用处理返回的代码,但是如果我使用
EditText 然后按下返回按钮,处理返回的代码根本不会调用。
有人知道这里发生了什么吗?
任何帮助将不胜感激。
【问题讨论】:
标签: android android-fragments android-edittext textwatcher