2

내 앱에 문제가 있습니다. 탭에서 조각을 변경해야하지만, 이렇게하면 이전 조각에서 새 조각이 겹칩니다.ActionBarSherlock 같은 탭의 조각을 겹치기

MainActivity :

public class MainActivity extends SherlockFragmentActivity { 

ViewPager mViewPager; 
TabsAdapter mTabsAdapter; 
TextView tabCenter; 
TextView tabText; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      WindowManager.LayoutParams.FLAG_FULLSCREEN); 

    mViewPager = new ViewPager(this); 
    mViewPager.setId(R.id.pager); 

    setContentView(mViewPager); 
    ActionBar bar = getSupportActionBar(); 
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
    bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE); 

    mTabsAdapter = new TabsAdapter(this, mViewPager); 

    mTabsAdapter.addTab(bar.newTab().setText("Home"), 
      FragmentTab1.class, createBundle("ft1")); 
    mTabsAdapter.addTab(bar.newTab().setText("FujiSan"), 
      FragmentTab2.class, null); 
} 

public static class TabsAdapter extends FragmentPagerAdapter implements 
     ActionBar.TabListener, ViewPager.OnPageChangeListener { 
    private final Context mContext; 
    private final ActionBar mActionBar; 
    private final ViewPager mViewPager; 
    private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>(); 

    static final class TabInfo { 
     private final Class<?> clss; 
     private final Bundle args; 

     TabInfo(Class<?> _class, Bundle _args) { 
      clss = _class; 
      args = _args; 
     } 
    } 

    public TabsAdapter(SherlockFragmentActivity activity, ViewPager pager) { 
     super(activity.getSupportFragmentManager()); 
     mContext = activity; 
     mActionBar = activity.getSupportActionBar(); 
     mViewPager = pager; 
     mViewPager.setAdapter(this); 
     mViewPager.setOnPageChangeListener(this); 
    } 

    public void addTab(ActionBar.Tab tab, Class<?> clss, Bundle args) { 
     TabInfo info = new TabInfo(clss, args); 
     tab.setTag(info); 
     tab.setTabListener(this); 
     mTabs.add(info); 
     mActionBar.addTab(tab); 
     notifyDataSetChanged(); 
    } 

    @Override 
    public int getCount() { 
     return mTabs.size(); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     TabInfo info = mTabs.get(position); 
     return Fragment.instantiate(mContext, info.clss.getName(), 
       info.args); 
    } 

    @Override 
    public void onPageScrolled(int position, float positionOffset, 
      int positionOffsetPixels) { 
    } 

    @Override 
    public void onPageSelected(int position) { 
     mActionBar.setSelectedNavigationItem(position); 
    } 

    @Override 
    public void onPageScrollStateChanged(int state) { 
    } 

    @Override 
    public void onTabSelected(Tab tab, FragmentTransaction ft) { 
     Object tag = tab.getTag(); 
     for (int i = 0; i < mTabs.size(); i++) { 
      if (mTabs.get(i) == tag) { 
       mViewPager.setCurrentItem(i); 
      } 
     } 
    } 

    @Override 
    public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
    } 

    @Override 
    public void onTabReselected(Tab tab, FragmentTransaction ft) { 
    } 
} 

public static Bundle createBundle(String title) { 
    Bundle bundle = new Bundle(); 
    bundle.putString("title", title); 
    return bundle; 
} 
} 

내가 두 개의 탭을 가지고 있고이 두 조각에 추가이 내 코드입니다. 이 레이아웃 :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/home" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 

> 

<android.support.v4.view.ViewPager 
    android:id="@+id/pager" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 
</android.support.v4.view.ViewPager> 
그리고 이것은 FragmentTab1의 코드입니다 :

public class FragmentTab1 extends SherlockFragment { 

static Context context; 

@Override 
public SherlockFragmentActivity getSherlockActivity() { 
    return super.getSherlockActivity(); 
} 

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 

} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    RelativeLayout view = (RelativeLayout) inflater.inflate(
      R.layout.fragmenttab1, container, false); 
    context = getActivity(); 

    Button guasti = (Button) view.findViewById(R.id.bGuasti); 
    Button segnala = (Button) view.findViewById(R.id.segnalaDisservizio); 
    guasti.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      Fragment newFragment = new FragmentTab2(); 
      FragmentTransaction transaction = getFragmentManager() 
        .beginTransaction(); 
      transaction.replace(R.id.frame1, newFragment, "new frsg"); 
      transaction.addToBackStack(null); 
      transaction.commit(); 
      getFragmentManager().executePendingTransactions(); 
     } 
    }); 

레이아웃과 FrameLayout이 있습니다

...omissis... 
    <FrameLayout 
    android:id="@+id/frame1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentTop="true" > 

</FrameLayout> 

이를 결과:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/home" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
> 

<FrameLayout 
android:id="@+id/frame1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_alignParentBottom="true" 
android:layout_alignParentLeft="true" 
android:layout_alignParentRight="true" 
android:layout_alignParentTop="true" > 

이보기 태그이 android:background="@android:color/black" 추가 : 빨간색 THERA의 두 번째 조각 모든 XML 파일에 enter image description here

답변

1

의 구성 요소는, 그것의 배경 색상을 정의해야합니다, 그것은 문제를 해결한다 당신이 정의했습니다.