2017-08-02 46 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()不解决。 –

相关问题