Tabhost中的动态制表符删除/删除

时间:2011-06-25 17:15:19

标签: java android android-tabhost tabwidget

我进行了长时间的搜索,发现人们正在处理从TabHost对象中删除单个且经常特定的选项卡的几种不同方式。我想尝试一下,如果我可以,收集所有这些方法这个简单的问题,让人们我的“商店”,他们需要和希望得到他们需要编写代码的答案正确的方法;我也觉得它会减少这些问题的数量。

目前我也无法找到我的代码的解决方案。我试图摆脱一个特定的标签而不触及其他标签;希望我也能找到答案。

我暂时不会为这个问题选择一个特定的答案,所以请在这里列出你用来处理这个问题的方法,供其他人查看。

谢谢。

更新

好的,这是我目前的代码:

TabHost mTabHost;
TabHost.TabSpec spec;
Intent mSettingsIntent;
Intent mSearchIntent;
int tabNum = 1;


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mSearchIntent = new Intent().setClass(this, SearchTab.class);
    mTabHost = getTabHost();
    mTabHost.getTabWidget().setDividerDrawable(R.drawable.tab_divider);

    makeTab("Tab");


    final Button newSearchBtn = (Button) findViewById(R.id.new_search_btn);
    newSearchBtn.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            // Perform action on clicks
            EditText searchBar = (EditText) findViewById(R.id.search_bar);
            final String searchString = searchBar.getText().toString();
            makeTab(searchString);

        }
    });
    final EditText edittext = (EditText) findViewById(R.id.search_bar);
    edittext.setOnKeyListener(new OnKeyListener() {
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            // If the event is a key-down event on the "enter" button
            if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
                (keyCode == KeyEvent.KEYCODE_ENTER)) {
              // Perform action on key press
                EditText searchBar = (EditText) findViewById(R.id.search_bar);
                final String searchString = searchBar.getText().toString();
                makeTab(searchString);
              return true;
            }
            return false;
        }
    });


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
     MenuInflater inflater = getMenuInflater();
     inflater.inflate(R.menu.tab_menu, menu);
     return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle item selection
    switch (item.getItemId()) {
    case R.id.menu_close:
        // TODO: Find/define method to close a single tab
        closeTab();
        return true;
    case R.id.menu_settings:
        // TODO: Create a basic Settings Activity and call constructor here
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}

public void makeTab(String tabText) {
    String tabTag = "Tab" + tabNum++;
    View tabview = createTabView(mTabHost.getContext(), tabText);
    spec = mTabHost.newTabSpec(tabTag).setIndicator(tabview).setContent(new Intent().setClass(this, SearchTab.class));
    mTabHost.addTab(spec);
    mTabHost.setCurrentTabByTag(tabTag);
}

private void closeTab() {
    // TODO: Define method for closing a single tab with tabTag
    mTabHost.removeViewAt(mTabHost.getCurrentTab());
}

private static View createTabView(final Context context, final String text) {
        View view = LayoutInflater.from(context).inflate(R.layout.tabs_bg, null);
        TextView tv = (TextView) view.findViewById(R.id.tabsText);
        tv.setText(text);
        return view;
    }

}

由于NullPointer Exception,我的应用锁定了,我不知道为什么;我还在试图弄清楚如何在Eclispe中读取调试器透视图以获取线索。当我有更多时,我会更新。

0 个答案:

没有答案