0

ActionBarSherlock を Google のフラグメント チュートリアルで動作させようとしてきましたが、「コンテンツ」フラグメントをビューに追加しようとすると問題が発生します。この行は次の例外を生成します

getFragmentManager().beginTransaction().add(android.R.id.content, content).commit();

The method add(int, Fragment) in the type FragmentTransaction 
is not applicable for the arguments (int, ContentFragment)

コードは Google のもの (http://developer.android.com/guide/components/fragments.html) と同じですが、必要に応じて SherlockActivity に拡張しました。ContentFragment/Activity は、単に私が Details アクティビティと呼んでいるものです。

ABS 参照をすべて取り出して通常の例にしても、同じ問題が発生します。Androidサポートライブラリに関係していると感じていますが、一生理解できません。

4

2 に答える 2

2

getSupportFragmentManager()の代わりに使用しgetFragmentManager()ます。

于 2012-10-28T22:48:33.170 に答える
0

フラグメントクラスはどのように見えますか?このコードは私にとってはうまく機能します:

android.support.v4.app.FragmentTransaction ft = getFragmentManager().beginTransaction();
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
    FragmentADetail frag = new FragmentADetail();
    ft.replace(android.R.id.content, frag);
    ft.addToBackStack(null);
    ft.commit();

そして、私のFragmentADetailクラスは次のようになります。

public class FragmentADetail extends SherlockFragment {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    getSherlockActivity().getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    View v = inflater.inflate(R.layout.fragment_a_detail_layout, container, false);
    v.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            //left empty on purpose to capture the onClick event. 
        }
    });

    return v;
}

@Override
public void onStop()
{
    super.onStop();
    getSherlockActivity().getSupportActionBar().setDisplayHomeAsUpEnabled(false);
}

}

于 2012-10-28T21:48:18.987 に答える