android - 初始初始化组织

标签 android initialization

所以我是 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/

相关文章:

Android 停止录屏权限提示

android - Visual Studio 不显示已安装的 Android api 级别

java - Java中哈希码的延迟初始化

java - 在 JAVA 中同时用对象和另一个列表初始化最终列表?

c++ - 一个关于C++初始化列表的问题

android - Chrome 自定义标签二次色

android - eclipse v4.2.1 在 Windows 7 上非常慢

java - android - XMLPullParser 错误

swift - 如何使用内部协议(protocol)的初始值设定项在公共(public)函数中构造新值?

java - 如何在启动/初始化时更改/编辑 JPanel 对象