i am getting “getTextBeforeCursor on inactive InputConnection” and other warnings and not getting respone from elastic search

血红的双手。 提交于 2019-12-13 05:42:27

问题


I made queries using Retrofit to the elasticsearch server for getting the posts but i am not able to see response in the logcat. I was learning from youtube tutoarial and in the video he gets the response and the post details but i'm getting warnings. I am new to this can anyone help.

this is snapshot of my logcat screen

And this is my code.

public class SearchFragment extends Fragment {

private static final String TAG = "SearchFragment";
private static final String BASE_URL = "http://35.232.207.55//elasticsearch/posts/post/";

//widgets
private ImageView mFilters;
private EditText mSearchText;

//vars
private String mElasticSearchPassword;
private String mPrefCity;
private String mPrefStateProv;
private String mPrefCountry;
private ArrayList<Post> mPosts;

@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);

    getElasticSearchPassword();
    init();

    return view;
}

private void init(){
    mFilters.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.d(TAG, "onClick: navigating to filters activity.");
            Intent intent = new Intent(getActivity(), FiltersActivity.class);
            startActivity(intent);
        }
    });

    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();

                ElasticSearchAPI searchAPI = retrofit.create(ElasticSearchAPI.class);

                HashMap<String, String> headerMap = new HashMap<String, String>();
                headerMap.put("Authorization", Credentials.basic("user", mElasticSearchPassword));

                String searchString = "";

                if(!mSearchText.equals("")){
                    searchString = searchString + mSearchText.getText().toString() + "*";
                }
                if(!mPrefCity.equals("")){
                    searchString = searchString + " city:" + mPrefCity;
                }
                if(!mPrefStateProv.equals("")){
                    searchString = searchString + " state_province:" + mPrefStateProv;
                }
                if(!mPrefCountry.equals("")){
                    searchString = searchString + " country:" + mPrefCountry;
                }

                Call<HitsObject> call = searchAPI.search(headerMap, "AND", searchString);

                call.enqueue(new Callback<HitsObject>() {
                    @Override
                    public void onResponse(Call<HitsObject> call, Response<HitsObject> response) {

                        HitsList hitsList = new HitsList();
                        String jsonResponse = "";
                        try{
                            Log.d(TAG, "onResponse: server response: " + response.toString());

                            if(response.isSuccessful()){
                                hitsList = response.body().getHits();
                            }else{
                                jsonResponse = response.errorBody().string();
                            }

                            Log.d(TAG, "onResponse: hits: " + hitsList);

                            for(int i = 0; i < hitsList.getPostIndex().size(); i++){
                                Log.d(TAG, "onResponse: data: " + hitsList.getPostIndex().get(i).getPost().toString());
                                mPosts.add(hitsList.getPostIndex().get(i).getPost());
                            }

                            Log.d(TAG, "onResponse: size: " + mPosts.size());
                            //setup the list of posts

                        }catch (NullPointerException e){
                            Log.e(TAG, "onResponse: NullPointerException: " + e.getMessage() );
                        }
                        catch (IndexOutOfBoundsException e){
                            Log.e(TAG, "onResponse: IndexOutOfBoundsException: " + e.getMessage() );
                        }
                        catch (IOException e){
                            Log.e(TAG, "onResponse: IOException: " + e.getMessage() );
                        }
                    }

                    @Override
                    public void onFailure(Call<HitsObject> call, Throwable t) {
                        Log.e(TAG, "onFailure: " + t.getMessage() );
                        Toast.makeText(getActivity(), "search failed", Toast.LENGTH_SHORT).show();
                    }
                });
            }

            return false;
        }
    });
}

@Override
public void onResume() {
    super.onResume();
    getFilters();
}

private void getElasticSearchPassword(){
    Log.d(TAG, "getElasticSearchPassword: retrieving elasticsearch password.");

    Query query = FirebaseDatabase.getInstance().getReference()
            .child(getString(R.string.node_elasticsearch))
            .orderByValue();

    query.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            DataSnapshot singleSnapshot = dataSnapshot.getChildren().iterator().next();
            mElasticSearchPassword = singleSnapshot.getValue().toString();

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

private void getFilters(){
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
    mPrefCity = preferences.getString(getString(R.string.preferences_city), "");
    mPrefStateProv = preferences.getString(getString(R.string.preferences_state_province), "");
    mPrefCountry = preferences.getString(getString(R.string.preferences_country), "");

    Log.d(TAG, "getFilters: got filters: \ncity: " + mPrefCity + "\nState/Prov: " + mPrefStateProv
            + "\nCountry: " + mPrefCountry);
}

}

来源:https://stackoverflow.com/questions/55324625/i-am-getting-gettextbeforecursor-on-inactive-inputconnection-and-other-warning

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!