0

我一直試圖讓ActionBarSherlock與Google的片段教程一起工作,並在嘗試將「內容」片段添加到視圖時遇到問題。該生產線生產的以下異常Android ActionBarSherlock片段

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) 

的代碼是相同的谷歌的(http://developer.android.com/guide/components/fragments.html)在需要的地方,除了我已經擴展到SherlockActivity。 ContentFragment/Activity僅僅是我所謂的Details活動。

即使我拿出所有的ABS參考使它成爲一個正常的例子,我也遇到了同樣的問題。我有一種感覺,它與android支持庫有關,但我不能爲我的生活弄清楚它。

+1

您是否在使用Android支持庫?因爲ActionBarSherlock使用它。 「import android.support.v4.app.FragmentTransaction;」這同樣適用於您的ContentFragment(即擴展android.support.v4.app.ListFragment;) 請參閱http://developer.android.com/tools/extras/support-library.html – Frank

+0

所以我應該擴展SherlockFragment或android.support.v4.app.Fragment?如果包含支持庫,我應該使用sherlockfragment,但這只是我的推理而已...... – user1781468

+0

嗨!我認爲你應該使用android.support.v4.app.Fragment擴展你的每個片段。但是包含這些片段的活動應該擴展SherlockFragmentActivity。我這樣做,我是一個項目,它的工作。 – Frank

回答

2

使用getSupportFragmentManager(),而不是getFragmentManager()

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); 
} 

}

+0

這是一個很好的例子,但我認爲OP想要爲視圖添加一個片段。沒有取代它 – Frank