这是我的第一个Android应用程序,我已经成为iPhone开发者3年了,这是一种改变的心态,我仍然发现一些奇怪的东西。首先我不知道这个iPhone背景是否会引起一些麻烦,但这就是我要做的事情:
我想实现一个ActionBar,它有两个选项,就像iOS中的TabBar一样:
我想要的是当用户选择一个动作时,会向用户显示一些活动。
这是我到目前为止所做的事情(不是那么多):
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个问题:
activity_first
,它确实加载了活动,但它加载ActionBar两次,就像这样:
我不明白为什么它被加载两次。如果我删除该行:mSherlock.setContentView(R.layout.activity_first);
它会加载一次Bar,显然我需要加载活动...
此外,我已将NoActionBar主题分配给XML(activity_first.xml)的图形编辑器中的activity_first,但它不起作用。我该怎么做才能加载一次。
感谢您宝贵的时间。
答案 0 :(得分:3)
这是否正确使用了ActivityBar?我的意思是,它应该用于切换活动吗?
您可以将“First”和“Second”视为桌面应用中工具栏按钮的等效项。如果您愿意,欢迎您将这些操作栏项目启动。
正如你在myApp类的OnCreate方法中看到的那样,我正在加载activity_first,它确实加载了活动,但它加载ActionBar两次,如下所示:
删除此行:
ActionBarSherlock mSherlock = ActionBarSherlock.wrap(this);
并将mSherlock.setContentView(R.layout.activity_first);
更改为setContentView(R.layout.activity_first);
。我相信这会解决你的问题。