Minha activity principal ProvaActivity deixou de extender Activity para extender FragmentActivity.
Depois, no método onCreate tenho duas situações a tratar:
if( isTablet() ) {
transaction.replace(R.id.prova_list, new ListaProvasFragment());
transaction.replace(R.id.prova_detail, new DetalheProvaFragment());
} else {
transaction.replace(R.id.prova_list, new ListaProvasFragment());
}
Neste código foi utilizado o mesmo fragmento (ListaProvasFragment) tanto para a situação da carga da lista para um tablet quanto para outro dispositivo.
Quando não estamos carregando de um tablet, preciso fazer com que o click em uma prova me leve para a tela de detalhe da prova.
Como faço isso?
Tentei desta forma, mas não funcionou:
package com.marciob.app.addressbook.fragment;
import java.util.List;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import com.marciob.app.addressbook.R;
import com.marciob.app.addressbook.activities.ProvaActivity;
import com.marciob.app.addressbook.model.Prova;
import com.marciob.app.addressbook.persistence.ProvaDAO;
public class ListaProvasFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_prova_list, null);
// put data on the list
ProvaDAO dao = new ProvaDAO(this.getActivity());
ListView listView = (ListView) view.findViewById(R.id.prova_list);
List<Prova> provas = dao.all();
listView.setAdapter(new ArrayAdapter<Prova>(this.getActivity(), android.R.layout.simple_list_item_1, provas));
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {
Prova selected = (Prova) adapter.getItemAtPosition(position);
ProvaActivity calendario = (ProvaActivity) getActivity();
calendario.setSelected(selected);
if( !isTabletOnLandscape() ) {
FragmentTransaction transaction = calendario.getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.prova_list, new DetalheProvaFragment());
transaction.commit();
}
}
});
return view;
}
private boolean isTabletOnLandscape() {
return this.getResources().getBoolean(R.bool.isTabletOnLandscape);
}
}