我是Android的新手。我偶然发现从菜单中连接标签和代码。
这是我的menu.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/multiTouchExample"
android:title="MultiTouch"
android:icon="@drawable/ic_multitouch_grey"
android:showAsAction="ifRoom">
</item>
</menu>
这是我的MyActivity.java:
//includes
public class MyActivity extends Activity {
final String LOG_TAG = "TAGLogs";
ActionBar actionBar;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
actionBar = this.getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
Log.d(LOG_TAG, "OnCreate start");
Log.d(LOG_TAG, new Integer(actionBar.getTabCount()).toString());
}
}
我在logcat中有这个:
> D/TAGLogs﹕ OnCreate start
> D/TAGLogs﹕ 0
所以它告诉我,我有0个标签,但我在menu.xml中有1个并在运行程序时看到它。它在哪里?我需要做什么?
这是工作的屏幕截图:
更新: 当我想链接res / layout / main.xml中的按钮和代码:
button = (Button) findViewById(R.id.button);
所以我没有在代码中创建带new operator的按钮。 有没有办法像按钮一样解决这个问题?
答案 0 :(得分:2)
所以,我在StackOverflow上找到了解决方案,但在另一个环境中。
以下是这个答案:
首先,您应该保存对菜单的引用:
publid boolean onCreateOptionsMenu(MenuItem menu){
getMenuInflater().inflate(R.menu.menu, menu);
this.menu = menu;// this.menu is just field Menu menu in MyActivity class
return true;
}
通过此引用,您可以完全访问menuItems。
例如:
MenuItem item = menu.findItem(R.id.multiTouchExample);
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
item.setIcon(R.drawable.ic_multitouch_red);
MultiTouchExample();
return true;
}
});
答案 1 :(得分:1)
这可能会对您有所帮助:
http://developer.android.com/guide/topics/ui/actionbar.html#Tabs
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Notice that setContentView() is not used, because we use the root
// android.R.id.content as the container for each fragment
// setup action bar for tabs
ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setDisplayShowTitleEnabled(false);
Tab tab = actionBar.newTab()
.setText(R.string.artist)
.setTabListener(new TabListener<ArtistFragment>(
this, "artist", ArtistFragment.class));
actionBar.addTab(tab);
tab = actionBar.newTab()
.setText(R.string.album)
.setTabListener(new TabListener<AlbumFragment>(
this, "album", AlbumFragment.class));
actionBar.addTab(tab);
}