1

这是我的第一个 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 个问题:

  1. 问题:这是对 ActivityBar 的正确使用吗?我的意思是,它应该用于切换活动吗?
  2. 问题:正如您在 myApp 类的 OnCreate 方法中看到的,我正在加载activity_first,它确实加载了活动,但是它两次加载了 ActionBar,如下所示:

在此处输入图像描述

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

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

感谢您宝贵的时间

4

1 回答 1

3

这是 ActivityBar 的正确使用吗?我的意思是,它应该用于切换活动吗?

您可以将“第一”和“第二”视为桌面应用程序中的工具栏按钮。如果您愿意,欢迎您让这些操作栏项目启动活动。

正如您在 myApp 类的 OnCreate 方法中看到的那样,我正在加载 activity_first,它确实加载了活动,但是它两次加载了 ActionBar,如下所示:

删除这一行:

ActionBarSherlock mSherlock = ActionBarSherlock.wrap(this);

并更改mSherlock.setContentView(R.layout.activity_first);setContentView(R.layout.activity_first);. 我相信这会解决你的问题。

于 2012-11-15T01:24:34.830 回答