所以我是 android 的新手,一个问题或更多的烦恼是我的 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();
}
我想知道其他程序员如何同时初始化大量的东西,如果有的话,还有什么更简单的方法。
最佳答案
没关系。尝试尽可能多地用 XML 定义事物。例如,设置 EditText
文本,您不需要在代码中执行此操作。
您甚至可以将设置过程分解为更多的 block ,例如 setupMenu()
或 initializeList()
。
我尽可能地尝试这样做 - 好处是可读性。
阅读 Clean Code - 有些东西有点矫枉过正,但我也尝试将它们应用到 Android 开发中。
关于android - 初始初始化组织,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16954031/