Situation As the topic suggest, I am working on an simple app, simple enough to be just a few fragments. The app is simple me querying items from an online server. However, in the app I would like to implement a search.
Problem
Although i'm a little experienced in searching I cannot seem to get it working in my fragment. When I click the "Search" a blank screen comes up, absent results.
What I have done so far
So far I have wrote what my search and volley which I have reason to believe is fine. Also in
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
the onCreateView is grey, signifying that it isnt being called or used anywhere. Breakpoints placed also arent activated. Making be believe I never get to that activity. Thank you
public class MySearchableActivity extends ActionBarActivity {
RequestQueue requestQueue;
List<NumberResults> storiesList = new ArrayList<>();
private RecyclerView recycle;
private Toolbar toolbar;
final Context context = this;
// @Override
//protected void onCreate(Bundle savedInstanceState)
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//super.onCreate(savedInstanceState);
// setContentView(R.layout.fragment_numbers);
toolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(toolbar);
Log.i(TAG, "in MySearchableActivity");
View layout = inflater.inflate(R.layout.fragment_numbers, container, false);
recycle = (RecyclerView) layout.findViewById(R.id.drawrList);
recycle.setLayoutManager(new LinearLayoutManager(this));
recycle.setHasFixedSize(true);
Intent intent = getIntent();
handleIntent(intent);
return layout;
}
private void handleIntent(Intent intent) {
// get the query out of the intent
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String searchQuery = intent.getStringExtra(SearchManager.QUERY);
doSearchQuery(searchQuery);
}
}
@Override
protected void onNewIntent(Intent intent) {
Log.i(TAG, "in onNewIntent");
setIntent(intent);
handleIntent(intent);
}
private void doSearchQuery(String query) {
final NumAdapters rvAdapter = new NumAdapters(storiesList);
recycle.setAdapter(rvAdapter);
requestQueue = Volley.newRequestQueue(this);
String url = "http://webserver.com/searchablewho.php?owner=" + query;
JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(url, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
try {
if (response.length() > 0) {
storiesList.clear();
for (int i = 0; i < response.length(); i++) {
JSONObject jsonObject = response.getJSONObject(i);
NumberResults stories = new NumberResults();
if (!jsonObject.isNull("number")) {
stories.name = jsonObject.getString("number");
}
if (!jsonObject.isNull("owner")) {
stories.age = jsonObject.getString("owner");
}
storiesList.add(i, stories);
}
rvAdapter.notifyDataSetChanged();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// do something
}
});
requestQueue.add(jsonArrayRequest);
}
You are extending ActionBarActivity instead of Fragment. That is why the method onCreateView is never called.