2013-06-06 1 views
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); 

} 

입니다 나는 그것이 매우 ... 지저분한 것을 안다. 그래서

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(); 

} 

하여 호출 할 수 있습니다 있을 경우 더 쉬운 방법입니다.

+0

프로그래머에 따라 다릅니다. 프로그램을 더 읽기 좋게하려면 두 번째 구현처럼 할 것입니다. 나는 또한 동일한 작업을 수행한다. 초기화와 리스너는 메소드로 구분되며, 나는 그것들을 oncreate로 호출한다 ... –

답변

2

괜찮습니다. XML에서 가능한 한 많은 것을 시도하고 정의하십시오. 예를 들어 EditText 텍스트를 설정하면 코드에서이를 수행 할 필요가 없습니다.

setupMenu() 또는 initializeList()과 같은 추가 청크로 설정 프로세스를 세분화 할 수도 있습니다.

최대한 노력하고 있습니다. 이점은 가독성입니다.

읽어 보시려면 Clean Code을 읽으십시오. 약간의 과장된 부분이 있지만 Android 개발에도 적용 해 보겠습니다.