Double ActionBar出现了吗?

时间:2012-11-15 01:20:31

标签: android actionbarsherlock

这是我的第一个Android应用程序,我已经成为iPhone开发者3年了,这是一种改变的心态,我仍然发现一些奇怪的东西。首先我不知道这个iPhone背景是否会引起一些麻烦,但这就是我要做的事情:

我想实现一个ActionBar,它有两个选项,就像iOS中的TabBar一样:

ActionBar

我想要的是当用户选择一个动作时,会向用户显示一些活动。

这是我到目前为止所做的事情(不是那么多):

  • 我正在使用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个问题:

  1. 问题:这是否正确使用了ActivityBar?我的意思是,它应该用于切换活动吗?
  2. 问题:正如您在myApp类的OnCreate方法中看到的那样,我正在加载activity_first,它确实加载了活动,但它加载ActionBar两次,就像这样:
  3. enter image description here

    我不明白为什么它被加载两次。如果我删除该行:mSherlock.setContentView(R.layout.activity_first);它会加载一次Bar,显然我需要加载活动...

    此外,我已将NoActionBar主题分配给XML(activity_first.xml)的图形编辑器中的activity_first,但它不起作用。我该怎么做才能加载一次。

    感谢您宝贵的时间

1 个答案:

答案 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);。我相信这会解决你的问题。