2013-08-12 83 views
0

我想實現一個導航抽屜。 「片段1」是一個列表片段:分段交易與列表片段

public class Fragment1 extends ListFragment { 
private List<String> musicList; 

public static ListFragment newInstance(Context context) { 
    Fragment1 f = new Fragment1(); 

    return f; 
} 

但是我不能使用fragmenttransaction替換片段中的主要活動:

public class MainActivity extends AbstractNavDrawerActivity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (savedInstanceState == null) { 
     getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, new Fragment1()).commit(); 
    } 
} 


@Override 
protected void onNavItemSelected(int id) { 
    switch ((int)id) { 
    case 101: 
     getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, new Fragment1()).commit(); 
     break; 
    case 102: 
     getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, new Fragment2()).commit(); 
     break; 
    } 
} 

}

的替換方法具有其下一個紅線並說:

The method replace(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int, Fragment1)"

我該怎麼辦?

+0

如果您使用sherlock,您需要將您的片段定義爲'SherlockListFragment'。 – MalaKa

+0

Your Fragment1是ListFragment的類型。編譯器正在尋找Fragment。 – bofredo

+0

我該如何改變它來尋找一個列表片段? –

回答

1
getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.content_frame,  new Fragment1()).commit(); 

國際海事組織你應該避免在方法代碼之後有方法調用這樣長的代碼,這很麻煩,很難理解!也許嘗試:

FragmentTransaction transaction = getActivity().getSupportFragmentManager() 
        .beginTransaction(); 
Fragment newFragment = new Fragment1(); 
transaction.add(R.id.content_frame, newFragment); 
transaction.addToBackStack(null); 
transaction.commit(); 
+0

試過了代碼,但它說getActivity的方法是未定義的?沒有其他錯誤 –

+0

@GibranGul:從上面貼出的代碼中移除'getActivity()。',然後再試一次。 – Squonk

+0

刪除突出顯示的getSupportFragmentManager()。beginTransaction();並給出了這個錯誤:類型不匹配:無法從android.support.v4.app.FragmentTransaction轉換爲android.app.FragmentTransaction –