2

そこで、ActionBars を試し始めたところですが、ハニカム以前のデバイスをサポートしたいので、ActionBar Sherlock を選択することにしました。サンプルをスキャンして、何か試してみたいと思いました。基本的に私が欲しいのは、すべてのアクティビティで同じように機能するユニバーサル ActionBar です。ActionBar 自体は、さまざまなアクティビティをナビゲートするために使用するだけです。私は何かを素早くハッキングしましたが、どういうわけか「汚い」と感じました。

他のすべてのアクティビティが継承するメインの親アクティビティ:

package com.example.abstest;

import android.app.ActionBar;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Debug;
import android.widget.ArrayAdapter;

import com.actionbarsherlock.app.ActionBar.OnNavigationListener;
import com.actionbarsherlock.app.SherlockActivity;


public class ActionBarActivity extends SherlockActivity implements OnNavigationListener {

    private String[] mItems = {"First", "Second", "Third"};
    protected int mCurrentItem;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Context context = getSupportActionBar().getThemedContext();
        ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(
                context, R.layout.sherlock_spinner_item, mItems);
        adapter.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item);

        getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
        getSupportActionBar().setListNavigationCallbacks(adapter, this);
    }

    @Override
    public boolean onNavigationItemSelected(int itemPosition, long itemId) {

        if(mCurrentItem != itemPosition) {
            Intent intent = null;

            switch(itemPosition) {

            case 0:
                intent = new Intent(this, FirstActivity.class);
                break;

            case 1:
                intent = new Intent(this, SecondActivity.class);
                break;

            case 2:
                intent = new Intent(this, ThirdActivity.class);
                break;

            }

            startActivity(intent);
        }

        return true;
    }

}

また、レイアウトが異なるこれらのタイプのアクティビティが 3 つあります。

package com.example.abstest;

import android.os.Bundle;

public class FirstActivity extends ActionBarActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.first);

        mCurrentItem = 0;
        getSupportActionBar().setSelectedNavigationItem(mCurrentItem);
    }

}

基本的に、私は ActionBar を使用して、これら 3 つのタイプのアクティビティを切り替えています。より良い実装のための提案はありますか?

4

1 に答える 1