estou iniciando em android mas com algumas dificuldades sobre como navegar com botões de anterior e próximo entre fragments de uma activity. Tenho esta activity que possui um arraylist de Passos e um Fragment. Dentro dela, gostaria de conforme fosse selecionado os botões de anterior e próximo, fossem alterados os dados contidos no fragment seguindo a ordem destes Passos. O OnCreate da Activity está da seguinte forma: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_passo_a_passo); int numPasso = 0; btAnterior = (Button) findViewById(R.id.btAnterior); btProximo = (Button) findViewById(R.id.btProximo); listaPassos = getIntent().getParcelableArrayListExtra("lista"); //Inicializando o fragmento FragmentManager manager = getSupportFragmentManager(); final FragmentTransaction f = manager.beginTransaction(); final PassoFragment fragmento = new PassoFragment(); //Passando o passo atual para o Fragment pelo bundle Bundle bundle = new Bundle(); passoAtual = listaPassos.get(numPasso); bundle.putParcelable("passoAtual",passoAtual); fragmento.setArguments(bundle); f.add(R.id.frag, fragmento); f.commit(); btAnteriorF.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //Decrementa o número do Passo e substitui o fragmento com os dados novos numPasso--; Bundle bundle2 = new Bundle(); bundle2.putParcelable("passoAtual",listaPassos.get(numPasso)); FragmentManager managerF = getSupportFragmentManager(); final FragmentTransaction f2 = managerF.beginTransaction(); final PassoFragment fragmento2 = new PassoFragment(); fragmento2.setArguments(bundle2); f2.replace(R.id.frag, fragmento2); f2.commit(); } }); btProximoF.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //Incrementa o número do Passo e substitui o fragmento com os dados novos numPasso++; Bundle bundle2 = new Bundle(); bundle2.putParcelable("passoAtual",listaPassos.get(numPasso)); FragmentManager managerF = getSupportFragmentManager(); final FragmentTransaction f2 = managerF.beginTransaction(); final PassoFragment fragmento2 = new PassoFragment(); fragmento2.setArguments(bundle2); f2.replace(R.id.frag, fragmento2); f2.commit(); } }); } E o código do Fragment que recebe da Activity pelo bundle um objeto Passo da lista: @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { //Pegando retorno do bundle: Bundle bundleRetorno = this.getArguments(); if(bundleRetorno != null){ Passo passoAtual = bundleRetorno.getParcelable("passoAtual"); } numPasso = passoAtual.getNumPasso(); // Inflate the layout for this fragment View v = inflater.inflate(R.layout.fragment_passo, container, false); passo = v.findViewById(R.id.numPassoAtualFrag); descricaoPasso = v.findViewById(R.id.descricaoPassoFrag); imgPasso = v.findViewById(R.id.imgPassoAtualFrag); //Setando as informações no fragmento: descricaoPasso.setText(passoAtual.getDescricaoPasso()); passo.setText("Passo "+passoAtual.getNumPasso()); Picasso.get().load(passoAtual.getImagemURL()).into(imgPasso); return v; } Minha ideia era usar a variável "numPassos" para situar qual o passo atual da lista, mas dá erro de "Variable 'numPasso' is acessed from whitin inner class" nas operações em que tento incrementar ou decrementar a variável na Activity. Continue reading...