2014-09-30 2 views
1

안드로이드에서 탭 레이아웃을 수행하려고하는데, 탭 바를 액션 바에 추가하려하지만 작동하지 않습니다. 내 문제는 함수의이 단계에서 setTabListener((android.app.ActionBar.TabListener) actionBar));, 오류 로그는 cannot be cast to android.app.ActionBar$TabListener했다. 나는 이미 setTabListener(this)을 설정했지만, 내 기능에서는 this이 Fragment를 참조하고 이유를 모르겠습니다.탭 리스너를 ActionBar로 설정하는 방법

이 내 전체 기능입니다 :

@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View v = inflater.inflate(R.layout.fragment_clubs_pagesn, container, false); 

    // Initilization 
    viewPager = (ViewPager) v.findViewById(R.id.pager); 
    actionBar = getActivity().getActionBar(); 
    mAdapter = new TabsPagerAdapter(getFragmentManager()); 

    viewPager.setAdapter(mAdapter); 
    actionBar.setHomeButtonEnabled(false); 
    //actionBar.setNavigationMode(ActionBarNAVIGATION_MODE_STANDARD); 
    // Adding Tabs 
    for (String tab_name : tabs) { 
     actionBar.addTab(actionBar.newTab().setText(tab_name) 
       .setTabListener((android.app.ActionBar.TabListener) actionBar)); } 

    /** 
    * on swiping the viewpager make respective tab selected 
    * */ 
    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 

     @Override 
     public void onPageSelected(int position) { 
      // on changing the page 
      // make respected tab selected 
      actionBar.setSelectedNavigationItem(position); 
     } 

     @Override 
     public void onPageScrolled(int arg0, float arg1, int arg2) { 
     } 

     @Override 
     public void onPageScrollStateChanged(int arg0) { 
     } 
    }); 

    return v; 

} 

답변

0

.setTabListener ((android.app.ActionBar.TabListener) 액션 바) actionBar 용량이 listener를 구현하지 때문에

잘못이다, fragment 또는 activitylistener을 구현 한 다음 예를 들어 조각을 호출해야합니다.

setTabListener(this); 

예를 들어이 activity에 대한 샘플 코드 :

public class MainActivity extends FragmentActivity implements ActionBar.TabListener { 

    ViewPager viewPager=null; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     final ActionBar actionBar=getActionBar(); 
     actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
     addTabs(actionBar); 


     } 
    private void addTabs(ActionBar actionBar) 
    { 
     ActionBar.Tab tab1=actionBar.newTab(); 
     tab1.setText("Tab 1"); 
     tab1.setTabListener(this); 

     ActionBar.Tab tab2=actionBar.newTab(); 
     tab2.setText("Tab 2"); 
     tab2.setTabListener(this); 

     ActionBar.Tab tab3=actionBar.newTab(); 
     tab3.setText("Tab 3"); 
     tab3.setTabListener(this); 

     actionBar.addTab(tab1); 
     actionBar.addTab(tab2); 
     actionBar.addTab(tab3); 
    } 

    @Override 
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { 

    } 

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

    } 

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

    } 
} 

} 

업데이트 :

for (String tab_name : tabs) { 
     actionBar.addTab(actionBar.newTab().setText(tab_name) 
       .setTabListener(YourFragment.this); } 
+0

덕분에, 그러나 나의 조각은 이미 ActionBar.TabListener –

+1

그래서'.setTabListener (YourFragment을 사용하여 구현합니다. 이); – mmlooloo

관련 문제