A
A
Alexey Ovsyankin2018-11-16 20:47:07
Java
Alexey Ovsyankin, 2018-11-16 20:47:07

How to call fragment method in fragment?

There is a fragment. It has a fetching method. I define TextView. I want to put a list of Json there. I don’t know how and where to call the method so that it works when creating a fragment and we see the displayed list in the application.

public class Frag2 extends Fragment {
  public static TextView data;
  @Nullable
  @Override
  public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.frag2_layout, container, false);
    return view;
  }

  @Override
  public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    data = (TextView)view.findViewById(R.id.fetdata);

  }



  public class fetchData extends AsyncTask<Void, Void, Void> {
    String data = "";
    String dataParsed = "";
    String singleParsed = "";


    @Override
    protected Void doInBackground(Void... voids) {
      try {
        URL url = new URL("https://api.github.com/users/reijs/repos");
        HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
        InputStream inputStream = httpURLConnection.getInputStream();
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        String line = "";
        while (line != null) {
          line = bufferedReader.readLine();
          data = data + line;
        }

        JSONArray JA = new JSONArray(data);
        for (int i = 0; i < JA.length(); i++) {

          JSONObject JO = (JSONObject) JA.get(i);
          singleParsed = "ID:" + JO.get("id") + "\n" +
                  "Name:" + JO.get("name") + "\n";
          dataParsed = dataParsed + singleParsed;
        }
      } catch (MalformedURLException e) {
        e.printStackTrace();
      } catch (IOException e) {
        e.printStackTrace();
      } catch (JSONException e) {
        e.printStackTrace();
      }
      return null;
    }

    @Override
    protected void onPostExecute(Void aVoid) {
      super.onPostExecute(aVoid);
      Frag2.data.setText(this.dataParsed);
    }

  }
}

Answer the question

In order to leave comments, you need to log in

1 answer(s)
E
Egor, 2018-11-16
@RATlius

In your fragment, the fetchData.execute(); not called at all

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question