4

以下のコードでアクションバーとアイテムを設定しており、それぞれのimage1が表示されています。ユーザーが [ブックマーク画面の表示] アクション アイテムをクリックすると、他のアクティビティに移動します。そのアクティビティでは、別の項目 ( SELECT BOOKMARK TYPE ) をSHOW BOOKMARK SCREENの代わりに表示したいと考えています。そこで、以下のようにそれぞれを true または false に設定して抽象クラスで管理しようと考えています。しかし今、私は2つのことを得ることができません。

1)両方のアクション アイテムのケース 0 を区別する方法は? アクションアイテムを互いに置き換えているためです。

2)そのSELECT BOOKMARK TYPEのドロップダウンを取得する方法は、画像 2に正確に示されています。

投稿はほとんど見たことがありませんが、私はAndroidに少し慣れていないため、現在のコードに余分なコードを追加して理解して実行することができません。これについて私を助けてもらえますか?コード スニペットを歓迎します。前もって感謝します。

public abstract class ActionActivity extends SherlockActivity {
    protected boolean mIsShowBookmarkScreen = true;


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

         if(mIsShowBookmarkScreen)
         {
             menu.add("SHOW BOOKMARK SCREEN")
            .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
         }

         else 
         {
             menu.add(SELECT BOOKMARK TYPE);
            .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
         }

        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        //This uses the imported MenuItem from ActionBarSherlock
        switch(item.getItemId())
        {

        case 0:
            Intent intent = new Intent(ActionActivity.this,BookmarkScreen.class);
            startActivity(intent);
            return true;
        }
        return false;
    }

     @Override
        protected void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);
            getSupportActionBar().setHomeButtonEnabled(true);
        }

}

画像 1:

ここに画像の説明を入力

画像 2:

ここに画像の説明を入力

少なくとも誰かが2番目のものを達成するのを手伝ってくれませんか。私は1番目の問題についてアイデアを得ました。

4

1 に答える 1

1

1)を使って微分しinstanceofます。

if (this instanceof ActivityA) {
    // start Intent A
} else if (this instanceof ActivityB) {
    // start Intent B
}

2)Spinnerカスタムとして aを追加しますActionView

<string-array name="items">
    <item>SELECT BOOKMARK TYPE</item>
    <item>TYPE-1</item>
    <item>TYPE-2</item>
    <item>TYPE-3</item>
</string-array>
MenuItem spinnerItem = menu.add(null);
spinnerItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
IcsSpinner spinner = new IcsSpinner(this, null);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
        this, R.array.items, R.layout.sherlock_spinner_item);
adapter.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
        LayoutParams.MATCH_PARENT));
spinnerItem.setActionView(spinner);

IcsSpinnerSDK バージョン 4.0 未満で同じ外観を作成するために、ここでは一種のプライベートを使用していることに注意してください。詳細については、この回答を参照してください。

をさらにカスタマイズするSpinner場合は、おそらく独自の を作成する必要がありますAdapter

于 2013-01-01T20:21:05.833 に答える