2017-03-14 2 views
0

Android Studio에서 imageButton으로 액세스하려는 보드에 6 개의 주사위 격자가 있습니다. 각 이미지 버튼에는 ID (button1은 "ImageButton1", 버튼 2는 "ImageButton2"등)가 있습니다. 차라리 아래 그림과 같은 여섯 반 동일한 문을 작성하는 것보다, 루프 하나에이 버튼으로 접근하고 싶습니다 : imageButtton1 등등 변수 c1에 저장 될 것이다for 루프에서 변수 이름 변경 Java

for (int i=0; i<6; i++) { 
     ImageButton c+i = (ImageButton)findViewById(R.id.imageButton+i); 
} 

. 물론 for 루프는 작성된대로 작동하지 않습니다. 이 방법을 구현할 수 있습니까?

+4

ImageButton의 배열 사용 ... –

+1

'for' 루프 밖에서 버튼을 사용할 계획이 아니라면 6 개의 변수가 필요하지 않습니다. 한 번에 하나씩 만 다루기 때문에 모든 것에 하나의 이름 만 사용하면 문제가 없습니다. – VHS

+0

그 길로 갈 필요가 있습니까? –

답변

2

Java 변수를 이름으로 동적으로 액세스 할 수 없습니다.

그러나 목록에 일회용으로 추가 할 수 있습니까?

List<ImageButton> allButtons = new ArrayList<>() {{ 
    add((ImageButton) findViewById(R.id.imageButton1)); 
    add((ImageButton) findViewById(R.id.imageButton2)); 
    add((ImageButton) findViewById(R.id.imageButton3)); 
    // etc. 
}}; 

나머지 코드를 반복적으로 단순화하여 간단하게 처리 할 수 ​​있습니다. 유지 관리가 용이해야이 중복이지만, 한 곳 — 즉, 모든 간단하고 읽기 쉽고입니다

private ImageButton imageButton(int index) { 
    switch (index) { 
     case 1: return (ImageButton) findViewById(R.id.imageButton1); 
     case 2: return (ImageButton) findViewById(R.id.imageButton2); 
     case 3: return (ImageButton) findViewById(R.id.imageButton3); 
     //etc. 
    } 
} 

:

for (ImageButton button : allButtons) { 
    ... 
} 

다른 방법으로는 인덱스로 이미지 버튼을 반환하는 방법을 만들 수 .

+0

나는 그가하고있는 일을하지 않고 루프 안에서 imageButton1, 2의 인스턴스를 얻는 방법을 묻고 있다고 생각한다. –

+0

그가 시도한 작업을 수행 할 수 없으며 정적 이름이있는 변수에 대한 동적 액세스라고합니다. 코드는 배열에 ImageButton을 추가하는 방법을 보여 주지만 동적 이름을 사용하여 루프에서 초기화하려고합니다. –