1

これは私の最初の Android アプリです。iPhone 開発者として 3 年間働いていますが、考え方が変わりました。まず、この iPhone の背景が問題を引き起こしているかどうかはわかりませんが、私がやろうとしていることは次のとおりです。

iOS の TabBar のように機能する 2 つのオプションを持つ 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 を 2 回ロードしています。

ここに画像の説明を入力

2回ロードされる理由がわかりません。行を削除するmSherlock.setContentView(R.layout.activity_first);と、バーが一度読み込まれます。明らかに、アクティビティを読み込む必要があります...

また、XML (activity_first.xml) のグラフィカル エディターで NoActionBar テーマを activity_first に割り当てましたが、機能しません。一度だけロードするにはどうすればよいですか。

貴重なお時間をありがとうございました

4

1 に答える 1

3

これは ActivityBar の正しい使い方ですか? つまり、アクティビティを切り替えるために使用する必要がありますか?

"First" と "Second" は、デスクトップ アプリのツールバー ボタンに相当すると考えることができます。必要に応じて、これらのアクション バー アイテムでアクティビティを開始することもできます。

myApp クラスの OnCreate メソッドでわかるように、私は activity_first をロードしています。アクティビティはロードしますが、次のように ActionBar を 2 回ロードします。

次の行を削除します。

ActionBarSherlock mSherlock = ActionBarSherlock.wrap(this);

だけに変更mSherlock.setContentView(R.layout.activity_first);しますsetContentView(R.layout.activity_first);。それがあなたの問題を解決すると信じています。

于 2012-11-15T01:24:34.830 に答える