アクティビティが作成されるときにlayout_container
ListFragment( )で拡張される線形レイアウト( skeleton.xml内)があります。menufragment
次に、ユーザーがクリックを実行すると、このレイアウトは別のListFragment(albumsfragment
)に置き換えられます。
問題は、戻るボタンを押すと、実際にメニューフラグメントに戻りますが、同じアイテムで再びいっぱいになっているため、リストが2倍長くなることです。どうすればこれを回避できますか?
アクティビティ内のOnCreateメソッド:
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.skeleton);
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
MenuFragment menufragment = new MenuFragment();
fragmentTransaction.add(R.id.layout_container, menufragment, "menufragment");
fragmentTransaction.commit();
}
アクティビティ内のOnClickメソッド:
public void OnMenuClick() {
AlbumsFragment albumsfragment = new AlbumsFragment();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.layout_container, albumsfragment, "albumsfragment");
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
私のフラグメントクラスコード:
public class MenuFragment extends ListFragment{
ArrayList<MenuItem> m_parts = new ArrayList<MenuItem>();
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
MenuAdapter m_adapter;
m_parts.add(new MenuItem ("item1"));
m_parts.add(new MenuItem ("item2"));
m_parts.add(new MenuItem ("item3"));
m_parts.add(new MenuItem ("item4"));
m_adapter = new MenuAdapter(getActivity(), R.layout.menu_row, m_parts);
setListAdapter(m_adapter);
したがって、AlbumFragmentからMenuFragmentに戻るたびに、item1、item2、item3、item4がもう一度追加されると、MenuFragmentのリストが大きくなります。
MenuFragmentのトランザクションの前にチェックを追加しようとしましif (savedInstanceState == null)
たが、何も変更されません。
これらのアイテムで再び膨らませることなく、MenuFragmentをバックスタックからポップアップさせるにはどうすればよいですか?
ありがとう。