J'ai deux fragments, un avec listview des objets et d'autres pour les détails de l'objet. Listview est peuplé par BaseAdapter et j'essaie de passer à un autre fragment (détails de l'objet) de listview onclick. Le code que je travaille bien avant avec les activités:FragmentTransaction à partir de BaseAdapter
public class MyAdapter extends BaseAdapter {
private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;
public ImageLoader imageLoader;
ArrayList<HashMap<String, String>> mDataShown;
ArrayList<HashMap<String, String>> mAllData;
public MyAdapter(Activity actt, ArrayList<HashMap<String, String>> d) {
activity = actt;
data=d;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader=new ImageLoader(activity.getApplicationContext());
mDataShown= (ArrayList<HashMap<String, String>>) d;
mAllData = (ArrayList<HashMap<String, String>>) mDataShown.clone();
}
public int getCount() {
return mDataShown.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.songs_row, null);
TextView tvsong = (TextView)vi.findViewById(R.id.tvSong);
TextView tvsinger = (TextView)vi.findViewById(R.id.tvSinger);
HashMap<String, String> song = new HashMap<String, String>();
song = data.get(position);
final Context ct;
ct = vi.getContext();
final String stsong = song.get(Songs.KEY_NAME);
final String stsinger = song.get(Songs.KEY_SINGER);
tvsong.setText(stsong);
tvsinger.setText(stsinger);
vi.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(ct, SongDetails.class);
Bundle bandl = new Bundle();
bandl.putString("song", stsong);
bandl.putString("singer", stsinger);
i.putExtras(bandl);
ct.startActivity(i);
}
});
return vi;
}
Mais maintenant, je change des activités avec des fragments et je dois remplacer l'activité fragment de départ à la place. Essayé avec ce code
vi.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Fragment SongDetailsFragment = SongDetails.newInstance();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.addToBackStack(null);
transaction.replace(R.id.SongContainer, SongDetailsFragment);
transaction.commit();
}
});
mais cela ne fonctionnera pas. Est-ce que quelqu'un a une idée de comment utiliser FragmentTransaction de BaseAdapter?
cela pourrait aider: http://stackoverflow.com/questions/14354885/android-fragments-backstack – ASP