2017-08-02 66 views
0

在我的應用程序中,我有主要的活動,它實現了TabLayout之間切換兩個片段。他們是這樣處理的:Android的片段事務錯誤的參數,片段,應該是android.support.v4.app.Fragment類型

private class PagerAdapter extends FragmentPagerAdapter { 

     PagerAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      return position == 0 ? Tab1Frag.getInstance() 
        : Tab2Frag.getInstance(); 
     } 

     @Override 
     public int getCount() { 
      return 2; 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      return position == 0 ? "Tab1" : "Tab2"; 
     } 
    } 

他們倆(這些片段)實現從

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager 

,否則我不能以這種方式使用它們。

所有工作正常,但現在我面臨的問題。我想有時用以下方法用不同片段更改Tab1片段:

private void replaceFragment(int code){ FragmentTransaction ft = getFragmentManager()。beginTransaction();

if(code==0){ 
     ViewListElementFrag fragment = new ViewListElementFrag(); 
     ft.replace(R.id.fragmentFrame, fragment, ViewListElementFrag.TAG); 
    } 
    else if(code==1){ 
     EditElementFragment fragment = new EditElementFragment(); 
     ft.replace(R.id.fragmentFrame, fragment, EditElementFragment.TAG); 
    } 
    ft.commit(); 
} 

這工作正常,但現在它正面臨着問題。

FragmentTransaction ft = getFragmentManager().beginTransaction(); 

需要是appv4,但它不允許從標準android.app.fragment中替換片段。我怎樣才能使它工作,所以我的標籤佈局片段可以被替換爲不同的片段?或者我需要使用新的活動?

感謝您在advnace 格熱戈日

編輯:

講解。在線路

ft.replace(R.id.fragmentFrame, fragment, FragmentWhatever.TAG); 

我得到錯誤的第二個參數,片段,應該是類型android.suppotr.v4.app.Fragment

回答

1

相反的:

FragmentTransaction ft = getFragmentManager().beginTransaction(); 

使用支持庫:

FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction(); 

還要確保進口:

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentTransaction; 
+0

我做進口android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction;並且getSupportManager()未解析。 –

+0

我已編輯答案... – rafsanahmad007

+0

我編輯了我的問題,但這不能解決問題。你可以看一下嗎? –

0

你也可以用它來代替片段

FragmentManager fragmentManager = getSupportFragmentManager(); 
fragmentManager.beginTransaction().replace(R.id.fragmentFrame, fragment).commit(); 
+0

import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction;我這樣做,和方法getSupportManager()不解決。 –

相關問題