这是我的第一个 android 应用程序,我作为 iPhone 开发人员已经 3 年了,这是一种思维方式的转变,但我仍然觉得有些东西很奇怪。首先我不知道这个 iPhone 背景是否会引起一些麻烦,但这是我想要做的:
我想用两个选项实现一个 ActionBar,就像 iOS 的 TabBar 一样:
我想要的是当用户选择一个动作时,一些活动将呈现给用户。
到目前为止,这是我正在做的事情(不是那么多):
- 我正在使用 ActionBarSherlock,我有 3 个活动:myApp、First 和 Second
myapp.java 仅创建 ActionBar 元素并加载activity_first
:
package com.example.myApp;
import com.actionbarsherlock.ActionBarSherlock;
import com.actionbarsherlock.view.MenuItem;
import android.os.Bundle;
import com.actionbarsherlock.ActionBarSherlock.OnCreateOptionsMenuListener;
import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu;
public class myApp extends SherlockActivity implements OnCreateOptionsMenuListener {
ActionBarSherlock mSherlock = ActionBarSherlock.wrap(this);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle("myApp");
mSherlock.setContentView(R.layout.activity_first);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add("First")
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
menu.add("Second")
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
return true;
}
}
到目前为止,除了生成的存根之外,这些活动还没有:
import android.app.Activity;
import android.os.Bundle;
public class First extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
}
}
所以我有 1 个问题和 1 个问题:
- 问题:这是对 ActivityBar 的正确使用吗?我的意思是,它应该用于切换活动吗?
- 问题:正如您在 myApp 类的 OnCreate 方法中看到的,我正在加载
activity_first
,它确实加载了活动,但是它两次加载了 ActionBar,如下所示:
我不明白为什么它被加载两次。如果我删除该行:mSherlock.setContentView(R.layout.activity_first);
它加载 Bar 一次,显然我需要加载活动......
此外,我已将 NoActionBar 主题分配给 XML 图形编辑器 (activity_first.xml) 中的 activity_first,但它不起作用。我能做些什么来加载它一次。
感谢您宝贵的时间。