2つのフラグメントAとBがあります。フラグメントBにはrecyclerviewが含まれており、フラグメントBがロードされたときに移入されます。しかし、フラグメントBで戻ると、フラグメントAに戻りますが、フラグメントBに戻ろうとしますが、リサイクルビューには値が入りません。リサイクルビューは向きが変更された後にのみ挿入されます
奇妙なことは、画面の向きを変更した後に表示されるということです。
フラグメントBに戻ると、recyclerviewにどのようにデータを埋め込むのですか?フラグメントBのonCreateViewにアダプタを設定する
:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
recyclerView = (RecyclerView) view.findViewById(R.id.rvPlaylists);
recyclerView.setHasFixedSize(true);
layoutManager = new GridLayoutManager(getActivity(),1);
recyclerView.setLayoutManager(layoutManager);
PlaylistAdapter adapter = new PlaylistAdapter(savedPlaylists);
recyclerView.setAdapter(adapter);
}
は、アダプタ:断片Bをロード
public class PlaylistAdapter extends
RecyclerView.Adapter<PlaylistAdapter.ViewHolder>
{
private Context mContext;
private ArrayList<Playlist> mPlaylists;
private LayoutInflater mInflater;
public PlaylistAdapter(ArrayList<Playlist> playlists)
{
mPlaylists = playlists;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.playlist_recyclerview_item, parent, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position)
{
Playlist currentPlaylist = mPlaylists.get(position);
holder.tvName.setText(currentPlaylist.getName());
holder.btnPlayPlaylist.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Log.d("btn clicked","mlk");
}
});
}
@Override
public int getItemCount()
{
return mPlaylists.size();
}
public class ViewHolder extends RecyclerView.ViewHolder
{
public TextView tvName;
public ImageButton btnPlayPlaylist;
public ViewHolder(View v)
{
super(v);
tvName = (TextView) v.findViewById(R.id.lblPlaylistName);
btnPlayPlaylist = (ImageButton) v.findViewById(R.id.btnPlayPlaylist);
}
}
:
public void navigateFromPlaylistFragmentToSavedPlaylistFragment()
{
getFragmentManager().beginTransaction().replace(R.id.activity_main, new SavedPlaylistFragment()).addToBackStack("navigatefromplaylistfragmenttosavedplaylistfragment")
.commit();
}
FragmentTransaction transaction = getFragmentManager()。beginTransaction(); transaction.detach(this).attach(this).commit(); これを試してみてください.... –
私はこれをどこに置くべきかわかりません。私はreplaceメソッドを使ってメインアクティビティにフラグメントをロードしていますが、ロードはうまくいきますが、問題は私のrecyclerviewにデータが格納されていないことです。 – Ferre12
http://stackoverflow.com/questions/23212162/how-to-move-from-one-fragment-to-another-fragment-on-click-of-a-imageview-in-and –