2012-07-25 2 views
0

이것은 Android와 관련된 Java에 관한 질문입니다.메소드의 StartActivity

내 코드에는 30 개의 사례가 포함 된 switch 문이 포함되어 있습니다. 각 사례의 본문은 해당 사례와 관련된 의도를 시작하는 데 동일한 형식을 사용합니다. 클래스 이름을 가진 메서드로 본문을 인수로 사용하려고했지만 클래스 이름을 의도적으로 하드 코딩해야하므로 해당 코드는 컴파일되지 않습니다. 다음은

은 (먼 길)

  switch(mState) { 
    case 0: 
       Intent myIntent = new Intent(); 
       myIntent.setClass(Home_ASM.this, Home_AS0.class); 
       startActivityForResult(myIntent, 0); 
       break; 

    case 1: 
       Intent myIntent1 = new Intent(); 
       myIntent1.setClass(Home_ASM.this, Home_AS1.class); 
       startActivityForResult(myIntent1, 2); 
       break;  

스위치의 한 부분이며, 나는 그런 코드 싶습니다 :

  switch(mState) { 
      case 0: 
       myStart(Home_AS0.class,1); 
       break; 
      case 1: 
       myStart(Home_AS1.class,2); 
       break; 

및 방법

private void myStart(String state, int value) { 
      Intent myIntent = new Intent(); 
      myIntent.setClass(Home_ASM.this, state); 
      startAcivityForResult(myIntent, value); 
      } 

어떤 아이디어 내가 어떻게이 일을 할 수 있니?

+0

클래스 및 Int를 허용하도록 myStart를 변경할 수 없습니까? – Tushar

답변

1

우리는 비슷한 일을합니다. 우리의 코드는 조금 다음과 같습니다

스위치 문 : 당신은 쉽게 특정 int 값을 적용하려면를 적용 할 수

private void launchActivity(Class<?> aClass, int value) { 
     Intent intent = new Intent(); 
     intent.setClass(this, aClass); 
     startActivityForResult(intent, value); 
    } 

:

case 0: 
     { 
     launchActivity(ActivityOne.class, value); 
     break; 
     } 

방법이 활동을 시작합니다. 희망이 도움이!

+0

Duh, 나는 문자열로서가 아니라 클래스로서 이름을 전달하는 것에 대해 생각해 봤어야했다. 감사 – Tori

2

왜하는 방법

private void myStart(Class class, int value) 

이없는 그리고 그냥 클래스 대신 문자열 통과?

+0

Duh, 나는 문자열로서가 아니라 클래스로서 이름을 전달하는 것에 대해 생각해 봤어야했다. 감사합니다 – Tori

2

당신은 Class.forName("nameofClass");

편집을 시도 할 수 있습니다 : 편집 한 후, 존 테일러의 대답은 내 대답보다 더 적합하다. 참조 : http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Class.html#forName%28java.lang.String%29

+0

그것은 아주 못 생겼지 만 당신이 원하는 것처럼 보입니다. * 유지 보수가 필요하고 리팩토링하는 사람이 하나의 클래스 나 패키지 일 때마다 부끄럽기 때문에 ugly합니다. – arikg

+0

나는 이것이 아주 좋다고 생각합니다. String가 아닌 Class를 받아들이도록 메소드 시그니처를 변경하는 것일까? 또는 나는 무엇인가 놓치고 있냐? –

+0

@arikg : 그 트레이드 오프. – kosa

관련 문제