마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Intent로 화면전환 할때 클래스명을 변수로 사용할 수 있나요?

0 추천

안녕하세요 안드로이드 프로그래밍을 연습하고 있는 학생인데요

Intent를 이용해 화면전환을 하는것에 대한 질문있는데요

레이아웃에 여러개의 버튼이 있을경우 스위치를 이용해서 해당 버튼이 눌렸을 때 버튼에 해당하는 화면을 전환할 수 있도록 컨트롤하는데요

버튼이 많아 질수록 케이스의 길이도 길어지더라구요

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long id) 
{
		
		Intent move_intent;
		switch ((int)id) 
                {
			case 1: // A화면으로 이동.
				move_intent = new Intent(MainActivity.this , A.class);
				startActivity(move_intent); 
				break;

			case 2: // B화면으로 이동.
				move_intent = new Intent(MainActivity.this , B.class);
				startActivity(move_intent); 
				break;

			case 3: // C화면으로 이동.
				move_intent = new Intent(MainActivity.this , C.class);
				startActivity(move_intent); 
				break;

			case 4: // D화면으로 이동.
				move_intent = new Intent(MainActivity.this , D.class);
				startActivity(move_intent); 
				break;
			
			default :
				move_intent = new Intent(MainActivity.this , E.class);
				startActivity(move_intent); 
				break;
		
		}
}

그래서 생각을 해보니 A.class부분에 변수를 사용해서 한번의 Intent를 사용하면 좋을것 같아서 해봤는데 안되더라구요

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long id) 
{
		String AA = 변수값;
		Intent move_intent;
		switch ((int)id) 
                {
			case 1: // 변수 AA의 화면으로 이동.
				move_intent = new Intent(MainActivity.this , AA.class);
				startActivity(move_intent); 
				break;
		
		}
}

Intent의 규칙상 저런식으로 변수를 끼워 넣는다는거 자체가 이상한것 같은데요

AA라는 변수가 아니라 AA라는 클라스를 찾아 해매는 이상한 문장이 되어 버렸네요...

아무튼 저런식으로 화면전환할 스위치문을 이용해 때 버튼수 많큼 Intent를 사용하지 않고  

원하는 화면으로 넘어갈 수 있게 버튼을 컨트롤 할 수 있는 방법이 있나요?

ngmato (270 포인트) 님이 2014년 2월 4일 질문

2개의 답변

+1 추천
 
채택된 답변
아래와 같은 방법도 있습니다. 인텐트의 setCalssName() 메소드를 이용.

Intent move_intent = new Intent(MainActivity.this , A.class);
String className = ".A";

switch ((int)id) {
  case 1: // B화면으로 이동.
    className = ".B";
    break;
  case 2: // B화면으로 이동.
    className = ".B";
    break;
  default: // 기본 A로 이동
    className = ".A";
    break;
}

move_intent.setCalssName(this , getPackageName() + className);
startActivity(move_intent);
익명사용자 님이 2014년 2월 20일 답변
ngmato님이 2014년 2월 24일 채택됨
+1 추천
Class.forName(String className); 이 메소드로 클래스를 찾을 수 있습니다.
원조안드로이드 (58,190 포인트) 님이 2014년 2월 4일 답변
답변 감사합니다.
Class.forName(String className);에 대해서 배워봐야 되겠군요
...