在actionbarsherlock中单击选项卡时调用新的活动类

时间:2013-09-04 12:50:23

标签: android

民间,

我是Android开发的新手,所以我的问题可能非常基础 - 我正在使用actionbarsherlock的标签窗格,并希望为3个标签提供3个不同的UI。但是,我还需要在所有选项卡中共用一个文本框。为了实现第一件事我的想法是有3个不同的活动类扩展ActionBar.TabListener,但是从setTabListener实例化那些类(使用new)是行不通的。任何解决方案?

此致

主要活动类 -

       ActionBar.Tab aTab = getSupportActionBar().newTab();
    aTab.setText("A");
    aTab.setTabListener(new AActivity());
    getSupportActionBar().addTab(aTab);

    ActionBar.Tab bTab = getSupportActionBar().newTab();
    bTab.setText("B");
    bTab.setTabListener(new MessageActivity());
    getSupportActionBar().addTab(bTab);

    ActionBar.Tab cTab = getSupportActionBar().newTab();
    cTab .setText("C");
    cTab .setTabListener(new DataActivity());
    getSupportActionBar().addTab(cTab );

现在的AActivity Class -

  public class AActivity extends Activity implements ActionBar.TabListener {

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

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.call, menu);
    return true;
}

@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
    System.out.println("In A");
    TextView txtView = (TextView) findViewById(R.id.aLog);

}

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

}

@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
    // TODO Auto-generated method stub

}
 }

它在

给我NullPointer
 TextView txtView = (TextView) findViewById(R.id.aLog)

所以假设新事物根本不起作用

1 个答案:

答案 0 :(得分:1)

你做错了。

TabListener界面允许您在选择或取消选择选项卡时进行响应。 你如何回应它完全取决于你。如果实现类是Activity或任何其他特定类,则无关紧要 - 只要它以某种方式实现TabListener的方法。

从不必须通过Activity自行实例化new MyActivity()课程。 Android需要自己这样做,以便为活动设置环境。因此,如果您想在选择标签时启动其他活动,则应在startActivity内调用onTabSelected。但是,在选择选项卡时启动活动可能是一个坏主意。这将打开一个完全独立的活动(在原始选项卡式活动之外),它将没有选项卡式操作栏。

您正在寻找片段:一个活动,其中一个容器包含一个可以与其他片段交换的片段。选择选项卡时,您希望将当前片段替换为特定于该选项卡的另一个片段。这在ActionBarSherlock示例中进行了演示,FragmentTabs.TabManager处理选项卡和片段之间的绑定。要在代码中使用它,您应该:

  1. 让您MainActivity延长SherlockFragmentActivity
  2. fragment_tabs.xml
  3. 抓取布局
  4. FragmentTabs.java抓取TabManager类并将其复制到您的代码库(作为单独的类或作为静态内部类,无论有效)。
  5. FragmentTabs.onCreate复制设置代码:

    super.onCreate(savedInstanceState);
    
    setContentView(R.layout.fragment_tabs);
    mTabHost = (TabHost)findViewById(android.R.id.tabhost);
    mTabHost.setup();
    
    mTabManager = new TabManager(this, mTabHost, R.id.realtabcontent);
    
  6. 使用TabManager.addTab创建标签,例如:

    mTabManager.addTab(mTabHost.newTabSpec("tabA").setIndicator("A"),
            AFragment.class, null);
    
  7. 为每个标签创建Fragment个类(例如AFragment)。覆盖Fragment.onCreateView,给您的用户界面充气并做一些奇特的事情。

  8. 另外,请阅读fragments developer guide