1

フラグメントの非表示と表示のサンプルアプリケーションを作成しました。最初のフラグメントはビューに適切に追加されますが、メニューを押してフラグメントを非表示にすると、非表示になりません。次のようにコードを投稿しました。

public class SwapfragActivity extends Activity
{

FrameLayout fr;
FragmentManager fm = getFragmentManager();

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    fr = (FrameLayout) findViewById(R.id.fm1);

    frag f = new frag();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) 
{
    menu.add("SHOW");
    menu.add("HIDE");
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) 
{
    frag f = new frag();
    if (item.getTitle() == "SHOW")
    {
        if (!f.isAdded()) 
        {
            FragmentTransaction ft = fm.beginTransaction();
            ft.add(R.id.fm1, f);
            ft.commit();
        }
        else if (f.isHidden())
        {
            FragmentTransaction ft = fm.beginTransaction();
            ft.show(f);
            ft.commit();
        }
    }
    else
    {
        if (f.isAdded()) 
        {
            FragmentTransaction ft = fm.beginTransaction();
            ft.hide(f);
            ft.commit();
        }
    }

    return true;
}
}

class frag extends Fragment 
{
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState)
    {
        return inflater.inflate(R.layout.a, container, false);
    }
}
4

0 に答える 0