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 回答