2013-10-18 33 views
0

我是Sherlock lib的新手。我的代碼如下SherlockFragmentActivity拋出所需的回調異常

public class MainActivity extends SherlockFragmentActivity { 

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

    com.actionbarsherlock.app.ActionBar actionbar = getSupportActionBar(); 
    actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
    actionbar.setTitle("PROFILE"); 
    ActionBar.Tab frag1tab = actionbar.newTab().setText("LOGIN"); 
    ActionBar.Tab frag2tab = actionbar.newTab().setText("REGISTER"); 

    Fragment fragment1 = new Fragment_1(); 
    Fragment fragment2 = new Fragment_2(); 

    frag1tab.setTabListener(new MyTabListener(fragment1)); 
    frag1tab.setTabListener(new MyTabListener(fragment2)); 

    actionbar.addTab(frag1tab); 
    actionbar.addTab(frag2tab); 

} 

class MyTabListener implements ActionBar.TabListener { 
    public Fragment fragment; 

    public MyTabListener(Fragment fragment) { 
     this.fragment = fragment; 
    } 

    @Override 
    public void onTabReselected(Tab tab, FragmentTransaction ft) { 
     // TODO Auto-generated method stub 
     ft.replace(R.id.fragment_container, fragment); 
    } 

    @Override 
    public void onTabSelected(Tab arg0, FragmentTransaction arg1) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onTabUnselected(Tab arg0, FragmentTransaction arg1) { 
     // TODO Auto-generated method stub 

    } 

} 

}

我也試圖實現直接聽衆,但沒有運氣。它顯示錯誤如下

java.lang.RuntimeException: Unable to start activity java.lang.IllegalStateException:  
Action Bar Tab must have a Callback 

回答

1

設置tabListener相同的標籤兩次frag1tab ..

frag1tab.setTabListener(new MyTabListener(fragment1)); 
    frag1tab.setTabListener(new MyTabListener(fragment2)); 

應該

frag1tab.setTabListener(new MyTabListener(fragment1)); 
    frag2tab.setTabListener(new MyTabListener(fragment2)); 
0

試試這個代碼,

@Override 
    protected void onResume() { 
     super.onResume(); 
}