Estou no vídeo 4 da aula 2, tentando criar a tela horizontal de detalhes de provas usando fragments. O app compila e roda, mas quando clico no botão para ir até a lista de provas, recebo um erro.
Caused by: java.lang.IllegalArgumentException: No view found for id 0x7f07003e (br.com.alura.agenda:id/frame_secundario) for fragment DetalhesProvaFragment{e5ddae7 #1 id=0x7f07003e}
Ou seja, o Java não consegue achar a view gerada para o ID especificado para o fragment que passei como parâmetro. Refiz a aula 2 vezes já e procurei extensivamente meu erro, mas até agora, sem solução. Procurei em outros fóruns, muitos recomendam usar a função getChildFragmentManager() mas tal método não é reconhecido pelo Android Studio. Também vi recomendações para usar o getFragmentManager() no lugar do getSupportFragmentManager(), entretanto, preciso fazer vários parsings e correções visto que usamos a biblioteca de suporte do fragment desde o início.
Estou sem ideias já, pelo que pude entender das minhas buscas online, tem algo a ver com os fragments estarem aninhados, mas não sei como consertar.
Aqui estão meu ProvasActivity.java , acitivity_provas.xml (land) e DetalhesProvaFragment.java respectivamente.
package br.com.alura.agenda;
import android.content.Intent;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.util.Arrays;
import java.util.List;
import br.com.alura.agenda.modelo.Prova;
public class ProvasActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.acitivity_provas);
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction tx = fragmentManager.beginTransaction();
//Replace substitui um frame layout por um fragment
tx.replace(R.id.frame_principal, new ListaProvasFragment());
tx.replace(R.id.frame_secundario, new DetalhesProvaFragment());
tx.commit();
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:orientation="horizontal"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:id="@+id/frame_principal"></FrameLayout>
<FrameLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:id="@+id/frame_secundario"></FrameLayout>
</LinearLayout>
package br.com.alura.agenda;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class DetalhesProvaFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_detalhes_prova, container, false);
return view;
}
}