我正在开发一个使用标签的应用程序,每个标签链接到一个网页,用户可以使用webview查看和交互。我遇到的问题是实现一个添加和删除命令,用户可以根据需要使用该命令删除选项卡,或者添加一个选项卡,其选项与其他选项一样。
以下是我的代码。
以下是所有其他文件使用的主要java文件:
public class UniversityofColorado extends TabActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TabHost host=getTabHost();
host.addTab(host.newTabSpec("one")
.setIndicator("Google")
.setContent(new Intent(this, Hello.class)));
host.addTab(host.newTabSpec("two")
.setIndicator("Colorado Main Site")
.setContent(new Intent(this, ColoradoMainSiteBrowser.class)));
host.addTab(host.newTabSpec("three")
.setIndicator("CULearn")
.setContent(new Intent(this, CULearnBrowser.class)));
host.addTab(host.newTabSpec("four")
.setIndicator("CULink")
.setContent(new Intent(this, CULinkBrowser.class)));
host.addTab(host.newTabSpec("five")
.setIndicator("MyCUInfo")
.setContent(new Intent(this, MyCUInfoBrowser.class)));
host.addTab(host.newTabSpec("six")
.setIndicator("Campus Map")
.setContent(new Intent(this, CampusBrowser.class)));
host.addTab(host.newTabSpec("Seven")
.setIndicator("Notes")
.setContent(new Intent(this, Notepadv3.class)));
}
// Inflates menu when "menu Key" is pressed
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
}
然后我将每个网页定义在主文件调用的单独java文件中 下面是其中之一:
public class ColoradoMainSiteBrowser extends Activity {
WebView webview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webview = (WebView) findViewById(R.id.webview);
webview.setWebViewClient(new HelloWebViewClient());
webview.getSettings().setJavaScriptEnabled(true);
webview.loadUrl("http://colorado.edu/");
}
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
view.loadUrl(url);
return true;
}
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
webview.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
}
我在主文件中定义了菜单,我只需要构建方法,这样按钮就可以完成他们想要做的事情。任何帮助都会很棒。
答案 0 :(得分:2)
使用Mohammed提到的代码非常有用,但您可能需要添加
tabs.setCurrentTab(0);
之前打电话
tabs.clearAllTabs();
根据http://code.google.com/p/android/issues/detail?id=2772所述的问题。 然后您的选项卡可能会被删除,但您在尝试切换或添加选项卡时可能会发现错误。对我来说,这个问题在调用
后得到修复tabs.setCurrentTab(index);
在for循环内部(在添加选项卡之后)。
所以你应该得到:
list.remove(nTabToRemoveIndex);
tabs.setCurrentTab(0); // <== ***FIRST EDIT***
tabs.clearAllTabs();
int nTabIndex = 0; // <== ***SECOND EDIT***
for(TabHost.TabSpec spec : list)
{
tabs.addTab(spec);
tabs.setCurrentTab(nTabIndex++); // <== ***THIRD EDIT***
}
希望它会有所帮助。
答案 1 :(得分:0)
你可以这样使用: 1-添加每个选项卡以列出数组 2 - 删除特定选项卡,首先将其从列表中删除并清除tabHost中的所有选项卡,然后从列表中再次添加它们。
检查此代码,该代码基本了解如何从tabHost中删除选项卡:
// data structure, what I referred to as memory
ArrayList<TabHost.TabSpec> list = new ArrayList<TabHost.TabSpec>();
// when you are adding tabs to tab host
// what you add, you remember
TabHost.TabSpec spec = tabs.newTabSpec("tag1");
spec.setContent(R.id.button);
spec.setIndicator("TabONe");
tabs.addTab(spec);
list.add(spec);
...
// when you want to remove
list.remove(list.size()-1); // remove it from memory
tabs.clearAllTabs(); // clear all tabs from the tabhost
for(TabHost.TabSpec spec : list) // add all that you remember back
tabs.addTab(spec);
资源: http://www.coderanch.com/t/460859/Android/Mobile/TabHost-Remove-Tab
我希望这会有所帮助。
微米。