Мне потребовалось некоторое время, чтобы понять, что этот setOnEditorActionListener является виновником. По крайней мере, в этой области.
Запуск теста на реальном устройстве ничего не сработает при нажатии Enter.
То же самое с эмулятором, но он отлично работает, используя Enter на клавиатуре моего компьютера.
Я добавил несколько строк в мой XML-файл, предложенный пользователями здесь.
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_search, container, false);
mFilters = (ImageView) view.findViewById(R.id.ic_search);
mSearchText = (EditText) view.findViewById(R.id.input_search);
Log.d(TAG, "getElasticSearchPassword: retrieving elasticsearch aissa password."+ mElasticSearchPassword);
getElasticSearchPassword();
init();
return view;
}
private void init(){
mSearchText.setOnEditorActionListener(new
TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if(actionId == EditorInfo.IME_ACTION_SEARCH
||actionId == EditorInfo.IME_ACTION_DONE
|| event.getAction() == KeyEvent.ACTION_DOWN
|| event.getKeyCode() == KeyEvent.KEYCODE_ENTER){
mPosts = new ArrayList<Post>();
Retrofit retrofit = new Retrofit.Builder()
baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
Code goes here
}
Return False
}
});
}
Вот мой оригинальный XML-файл:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="50dp"
android:id="@+id/search_toolbar"
android:background="@drawable/grey_border_bottom"
android:padding="2dp"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@null"
android:hint="search..."
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:textSize="14sp"
android:layout_toLeftOf="@+id/ic_search"
android:id="@+id/input_search"
android:layout_gravity="center_vertical"
android:maxLines="1"
android:imeOptions="actionSearch"
android:inputType="text"
/>
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:id="@+id/ic_search"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:src="@drawable/ic_search"
android:layout_marginRight="5dp"/>
</RelativeLayout>
</android.support.v7.widget.Toolbar>
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/recyclerView"
android:scrollbars="vertical"
android:layout_below="@+id/search_toolbar"
android:background="@color/lightGrey">
</android.support.v7.widget.RecyclerView>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/container"
android:visibility="gone">
</FrameLayout>
</RelativeLayout>
Также я попытался удалить условие if. Подозревая, что некоторые API не отвечают на IME_ACTION.