1

だから私はアンドロイドが初めてで、問題またはそれ以上の煩わしさは私の oncreate メソッドです

@Override
protected void onCreate(Bundle state) {
    super.onCreate(state);
    setContentView(R.layout.phone_inputscreen);

    presetTypeLbl = (TextView) findViewById(R.id.presetTypeLbl);

    calcBtn = (Button) findViewById(R.id.calcBtn);
    calcBtn.setOnClickListener(this);

    distanceSpinner = (Spinner) findViewById(R.id.distanceSpinner);
    distanceSpinner.setOnItemSelectedListener(this);

    areaSpinner = (Spinner) findViewById(R.id.areaSpinner);
    areaSpinner.setOnItemSelectedListener(this);

    genderSpinner = (Spinner) findViewById(R.id.genderSpinner);
    genderSpinner.setOnItemSelectedListener(this);

    distanceSpinner.setAdapter(createSimpleAdapter(R.array.distanceType));
    areaSpinner.setAdapter(createSimpleAdapter(R.array.areaType));
    genderSpinner.setAdapter(createSimpleAdapter(R.array.genderType));

    shoeSizeInput = (EditText) findViewById(R.id.shoeSizeInput);
    shoeSizeInput.setText("10");

    distanceInput = (EditText) findViewById(R.id.distanceInput);
    distanceInput.setText("0");

    menu = new SlidingMenu(this);
    menu.setMode(SlidingMenu.RIGHT);
    menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);
    menu.setFadeEnabled(false);
    menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
    menu.setMenu(R.layout.phone_presetscreen);

    Display display = getWindowManager().getDefaultDisplay();
    @SuppressWarnings("deprecation")
    int width = display.getWidth();
    menu.setBehindOffset(width - 255);

    exv = (ExpandableListView) findViewById(R.id.myList);
    ExListViewAdapter exAdapter = new ExListViewAdapter(this, this);
    exv.setAdapter(exAdapter);

}

ご覧のとおり、多くのことが on create メソッドで初期化されているだけで、非常に... 面倒です。このように別の方法に入れることを考えました

public void initializeInputScreen() {
    presetTypeLbl = (TextView) findViewById(R.id.presetTypeLbl);

    calcBtn = (Button) findViewById(R.id.calcBtn);
    calcBtn.setOnClickListener(this);

    distanceSpinner = (Spinner) findViewById(R.id.distanceSpinner);
    distanceSpinner.setOnItemSelectedListener(this);

    areaSpinner = (Spinner) findViewById(R.id.areaSpinner);
    areaSpinner.setOnItemSelectedListener(this);

    genderSpinner = (Spinner) findViewById(R.id.genderSpinner);
    genderSpinner.setOnItemSelectedListener(this);

    distanceSpinner.setAdapter(createSimpleAdapter(R.array.distanceType));
    areaSpinner.setAdapter(createSimpleAdapter(R.array.areaType));
    genderSpinner.setAdapter(createSimpleAdapter(R.array.genderType));

    shoeSizeInput = (EditText) findViewById(R.id.shoeSizeInput);
    shoeSizeInput.setText("10");

    distanceInput = (EditText) findViewById(R.id.distanceInput);
    distanceInput.setText("0");

    menu = new SlidingMenu(this);
    menu.setMode(SlidingMenu.RIGHT);
    menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);
    menu.setFadeEnabled(false);
    menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
    menu.setMenu(R.layout.phone_presetscreen);

    Display display = getWindowManager().getDefaultDisplay();
    @SuppressWarnings("deprecation")
    int width = display.getWidth();
    menu.setBehindOffset(width - 255);

    exv = (ExpandableListView) findViewById(R.id.myList);
    ExListViewAdapter exAdapter = new ExListViewAdapter(this, this);
    exv.setAdapter(exAdapter);
}

そして、私はそれを呼び出すことができます

protected void onCreate(Bundle state) {
    super.onCreate(state);
    setContentView(R.layout.phone_inputscreen);
    initializeInputScreen();

}

他のプログラマーが一度に多数のものを初期化する方法と、もしあればもっと簡単な方法を知りたいです。

4

1 に答える 1

2

それはいいです。できるだけ XML で定義してみてください。たとえば、EditTextテキストを設定する場合、コードでそれを行う必要はありません。

setupMenu()セットアップ プロセスを、またはのようにさらにチャンクに分割することもできますinitializeList()

私はできる限りこれを行うようにしています - 利点は読みやすさです。

Clean Codeを読んでください。いくつかのことは少しやり過ぎですが、Android 開発にも適用しようとしています。

于 2013-06-06T05:10:20.727 に答える