2012-12-05 5 views
0

나는이 같은 클래스의 배열을 가지고자바 클래스 클래스

intent =new Intent(this,testerClasses[0]); 
startActivity(intent); 

나 ' 다음 작업을 수행하는 방법을 알아 내려고 노력하고 있으며, 실제로 어떻게해야하는지 알아 내려고 애 쓰고 있습니다.

  1. 클래스의 인스턴스에서 함수를 호출해야합니다. 대부분 정적이거나 정적 인 함수이므로 함수의 인스턴스를 얻는 것만으로 충분합니다.
  2. 의도 구조가 요구하는대로 클래스를 전달할 수 있어야합니다.

왜 이렇게하고 싶습니까? 가끔은 의도와 같은 함수를 호출하고 싶을 뿐이며, 호출하지 않아도 의도에 대한 데이터를 얻고 싶을 때가 있습니다. 내 abstractTester 클래스 (모든 구체적인 테스터 클래스에서 상속받은)에는 테스트의 이름과 같은 몇 가지 정보가 포함되어 있습니다.이 이름은 인 텐트가 시작되기도 전에 편리하게 사용할 수 있습니다.

도움 주셔서 감사합니다.

답변

1

올바른 해결책은, 아래의 코드를 사용하려고 할 수 있습니다

private static final abstractTester[] testerClasses={ 
    new Tester1() 
}; 

intent =new Intent(this,testerClasses[0].getClass()); 
startActivity(intent); 

을 그럼 난 클래스를 참조 할 필요가 있다면, 나는 그것을 바로 할 수 있습니다. 매력처럼 작동합니다!

1

Intent과 함께 클래스 개체를 전달할 수 없습니다. 대신 인 텐트에 클래스 이름을 전달하십시오. 수신기는 클래스를 가져올 수 있습니다. loadClass()

수신기에 클래스 개체가 있으면 의도 한 메서드를 호출하기 위해 리플렉션을 사용할 수 있습니다.

0

안녕 당신은

ArrayList<Class<?>> a = new ArrayList<Class<?>>(); 
a.add(MainActivity2.class); 
a.add(MainActivity.class); 

Intent intent =new Intent(this,a.get(0)); 
startActivity(intent);