How to target values in a Fragment instead of an Activity using Drawer menu?



  • I created a slider menu in my application and I was able to call a fragment when I select the menu options but I am having trouble printing the values in this fragment instead of using an Activity to show the data. Below the application code.

    public class MainActivity extends AppCompatActivity {
    
    private static final int CODE_GET_REQUEST = 1024;
    private static final int CODE_POST_REQUEST = 1025;
    
    //Variaveis dos componentes
    EditText editTextHeroId, editTextName, editTextRealname;
    RatingBar ratingBar;
    Spinner spinnerTeam;
    ProgressBar progressBarList;
    ListView listView;
    
    FloatingActionButton fabAddHero;
    
    //vamos usar essa lista para exibir herói na lista
    List<Hero> heroList;
    
    // como o mesmo botão é usado para criar e atualizar
    // precisamos rastrear se é uma atualização ou operação de criação
    // para isso, temos esse booleano
    boolean isUpdating = false;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        //Pegando referencia dos componentes
        editTextHeroId = (EditText) findViewById(R.id.editTextHeroId);
        editTextName = (EditText) findViewById(R.id.editTextName);
        editTextRealname = (EditText) findViewById(R.id.editTextRealname);
        ratingBar = (RatingBar) findViewById(R.id.ratingBar);
        spinnerTeam = (Spinner) findViewById(R.id.spinnerTeamAffiliation);
    
        //buttonAddUpdate = (Button) findViewById(R.id.buttonAddUpdate);
    
        progressBarList = (ProgressBar) findViewById(R.id.progressBarList);
        listView = (ListView) findViewById(R.id.listViewHeroes);
    
        heroList = new ArrayList<>();
    
        fabAddHero = (FloatingActionButton)findViewById(R.id.fabAddHero);
        fabAddHero.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent it = new Intent(MainActivity.this, AddHeroActivity.class);
                startActivity(it);
            }
        });
        //Método que retorna a lista de herois da base de dados
        readHeroes();
    }
    
    //Recupera os dados dos herois do banco de dados
    private void readHeroes() {
        PerformNetworkRequest request = new PerformNetworkRequest(Api.URL_READ_HEROES, null, CODE_GET_REQUEST);
        request.execute();
    }
    
    //Para atualizar a lista de herois
    private void refreshHeroList(JSONArray heroes) throws JSONException {
        //limpa herois anteriores
        heroList.clear();
    
        //Cria uma nova lista com os herois atualizados do JSON de resposta
        for (int i = 0; i < heroes.length(); i++) {
            //getting each hero object
            JSONObject obj = heroes.getJSONObject(i);
    
            //adiciona os herois a lista
            heroList.add(new Hero(
                    obj.getInt("id"),
                    obj.getString("name"),
                    obj.getString("realname"),
                    obj.getInt("rating"),
                    obj.getString("teamaffiliation")
            ));
        }
    
        //cria um adapter com a lista de herois
        HeroAdapter adapter = new HeroAdapter(heroList);
        listView.setAdapter(adapter);
    }
    
    //classe interna para executar solicitação de rede estendendo um AsyncTask
    private class PerformNetworkRequest extends AsyncTask<Void, Void, String> {
    
        //o URL onde precisa enviar a solicitação
        String url;
    
        //Os parametros
        HashMap<String, String> params;
    
        //O código do pedido para definir se é um GET ou POST
        int requestCode;
    
        //Construtor para inicializar os valores
        PerformNetworkRequest(String url, HashMap<String, String> params, int requestCode) {
            this.url = url;
            this.params = params;
            this.requestCode = requestCode;
        }
    
        //Quando a tarefa começou a exibir uma barra de progresso
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            //progressBarList.setVisibility(View.VISIBLE);
        }
    
        //Este método dará a resposta do pedido
        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
           // progressBarList.setVisibility(GONE);
            try {
                JSONObject object = new JSONObject(s);
                if (!object.getBoolean("error")) {
                   // Toast.makeText(getApplicationContext(), object.getString("message"), Toast.LENGTH_SHORT).show();
                    //atualizando o herolista após cada operação
                    //então nós conseguimos uma lista atualizada
                    refreshHeroList(object.getJSONArray("heroes"));
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    
        //A operação da rede será realizada em segundo plano
        @Override
        protected String doInBackground(Void... voids) {
            RequestHandler requestHandler = new RequestHandler();
    
            if (requestCode == CODE_POST_REQUEST)
                return requestHandler.sendPostRequest(url, params);
    
    
            if (requestCode == CODE_GET_REQUEST)
                return requestHandler.sendGetRequest(url);
    
            return null;
        }
    }
    
    //Classe interna que cria uma adapter para exibir a lista de herois
    class HeroAdapter extends ArrayAdapter<Hero> {
    
        //our hero list
        List<Hero> heroList;
    
        //constructor to get the list
        public HeroAdapter(List<Hero> heroList) {
            super(MainActivity.this, R.layout.layout_hero_list, heroList);
            this.heroList = heroList;
        }
    
        //Metodo que retorna a lista de heroes
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            LayoutInflater inflater = getLayoutInflater();
            View listViewItem = inflater.inflate(R.layout.layout_hero_list, null, true);
    
            //Pegando referencia dos componentes
            TextView textViewName = listViewItem.findViewById(R.id.textViewName);
            TextView textViewRealname = listViewItem.findViewById(R.id.textViewRealname);
    
            //Pegando referencia dos textViews update e delete
            TextView textViewUpdate = listViewItem.findViewById(R.id.textViewUpdate);
    
            final Hero hero = heroList.get(position);
    
            textViewName.setText(hero.getName());
            textViewRealname.setText(hero.getRealname());
    
            //Se o textview clicado for o update
            textViewUpdate.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
    
                    Intent intent = new Intent(MainActivity.this, EditHeroActivity.class);
                    intent.putExtra("hero", hero);
                    startActivity(intent);
                }
            });
    
            return listViewItem;
        }
    }
    

    }



  • To pass the data pro fragment you use arguments, so:

    MyFragment myFragment = new MyFragment();
    

    Bundle args = new Bundle();
    args.putInt("someInt", someInt);
    myFragment.setArguments(args);

    To get the values inside the fragment, you use:

    getArguments().getInt("someInt", 0);




Suggested Topics

  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2