0

我有 5 个活动,每个活动显示 10 个按钮。根据数据库中的数据显示或隐藏按钮。目前,我在所有 5 个活动中都有完全相同的代码。如何创建可以包含在每个活动中的单个模块,这样我就不必复制代码?

我目前在每个模块的循环中包含相同的代码:

if ( i == 1 ) ((Button) findViewById(R.id.btn1 )).setVisibility( visible ) ;
if ( i == 2 ) ((Button) findViewById(R.id.btn2 )).setVisibility( visible ) ;
if ( i == 3 ) ((Button) findViewById(R.id.btn3 )).setVisibility( visible ) ;
if ( i == 4 ) ((Button) findViewById(R.id.btn4 )).setVisibility( visible ) ;
if ( i == 5 ) ((Button) findViewById(R.id.btn5 )).setVisibility( visible ) ;
4

1 回答 1

1

首先,为了使代码更短,您可以创建一个 id 数组并使用 i 作为索引:

int ids[] = { R.id.btn1, R.id.btn2, R.id.btn3, R.id.btn4,R.id.btn5};

// ....

if (i >= ids.length) {
  // some error
}
else {
    ((Button) findViewById(ids[i] )).setVisibility( visible );
}

如果按钮因活动而异,您可以创建一个静态方法:

public static boolean setVisible(int[] ids, int i) {
    if (i >= ids.length) {
        return false;
    }
    else {
        ((Button) findViewById(ids[i] )).setVisibility( visible );
        return true;
    }    
}

如果它们都相同,则可以将数组创建为与静态方法相同的类中的静态数组,并且只传递索引。

于 2011-08-07T01:48:20.347 回答