2010-02-02 5 views
2

은 내가 의도로 새로운 활동을 호출하는 동안 변수를 사용하는 방법은 무엇입니까?

이제 내가 새로운 활동을

문자열 VAR1, VAR2, VAR3를 호출하는 변수를 사용할

새로운 활동을 호출하는 코드를 다음있다; var1 = "로그인"; var2 = "가입"; var3 = "more";

Intent i; 
i = new Intent(Favorites.this, Login.class); --> login.class with var 
startActivity(i); 

어떤 방법으로이 방법을 달성 할 수 있습니까 ??? 당신이 당신의 자신의 정보를 넣을 수있는 URI에서

public Intent(String action, Uri uri, Context packageContext, Class<?> cls) 

: 데이터를 추가하려면

답변

4

당신은 같은 문자열을 통과하지 못할 다음과 같이 또한 번들의 변수를 넣고 엑스트라로 전체 번들을 통과 할 수

Class activityClass = Login.class; // This could be passed in as a variable. 

Intent i; 
i = new Intent(Favorites.this, activityClass); --> login.class with var 
i.putExtra("var1", "Login"); 
i.putExtra("var2", "Signup"); 
i.putExtra("var2", "more"); 
startActivity(i); 

Here is an example

매개 변수는 Activity 여야합니다.

if 또는 switch 문을 사용하여 다른 선택 항목간에 전환 할 수 있습니다.어쩌면이 같은

뭔가 ....

Intent i; 
switch(var) 
case:Login 
i = new Intent(Favorites.this, Login.class); 
break; 
case:Signup 
i = new Intent(Favorites.this, Signup.class); 
break; 
case:More 
i = new Intent(Favorites.this, More.class); 
break; 


startActivity(i); 
+4

그냥'문자열'을 Java로 바꿀 수 없다 ;-) – Matthias

+0

사실 그렇지만 사람들이 스스로를 위해 몇 가지 것을 생각하게해야한다 :-) –

0

, 당신은 다른 의도 생성자를 사용해야합니다. 자세한 내용은 this link을 참조하십시오.

1

Maurits이 준 링크에서 putExtras 메쏘드도 볼 수 있습니다.

더 많은 정보 here를 참조 putExtra를 위해 (SO에 좋아 보이는 나던 URL) 편집

* 검색 : DONAL 래퍼 티 포스트에서

, 나는 당신이 영업 이익에 무슨 뜻인지 이제 이해 생각합니다.

당신이 할 수있는 다음과 같습니다 :

이 예 com.yourpackage.Login의 시켜라 문자열 (doc 후에서 활동

아래의 AndroidManifest.xml에 지정해야합니다

String theClass = "Login"; 
StringBuilder myAction = new StringBuilder("com.yourpackage."); 
myAction.append(theClass); 
Intent i = new Intent(myAction.toString()); 
startActivity(i) 

:

public 인 텐트 (String 액션)

해당 사항 : API 레벨 1 주어진 ac로 인 텐트 만들기 . 다른 모든 필드 (데이터, 유형, 클래스)는 null입니다. 인 텐트는 시스템에서 전역 적으로 사용되기 때문에 액션이 네임 스페이스에 있어야합니다. 예를 들어 시스템 VIEW 액션은 android.intent.action.VIEW입니다. 애플리케이션의 커스텀 액션은 com.google.app.myapp.CUSTOM_ACTION과 같을 것입니다.

+0

같은 변수를 사용하여 의도를 시작하려고합니다. append (theClass)는 myAction.append (theClass)이어야합니다. –

+0

@Maurits - 죄송합니다. 방금 고쳤습니다 - thanks – ccheneson

8

편집 됨 : 가변 액티비티 클래스가 추가되었습니다.

인 텐트의 변수를 의도의 추가 변수로 설정합니다. 클래스 이름을 의도에 쉽게 전달할 수 있습니다. 그래서 당신은 말할 수 :

Class activityClass = Login.class; 

Intent i; 
i = new Intent(Favorites.this, activityClass); --> login.class with var 
Bundle bundle = new Bundle(); 
bundle.putString("var1", "Login"); 
bundle.putString("var2", "Signup"); 
bundle.putString("var2", "more"); 
i.putExtras(bundle); 
startActivity(i); 
+0

아니, 아니, 내게 다른 활동에 가치를 전달하는 예제를 제공하고 있지만 동적으로 활동을 호출하고 싶습니다. 변수 ..로 .. login.class를 대체하고 싶습니다. 그러니 .. – UMAR

+1

그럼 Login.class를 변수로 바꾸고 싶습니다. . 정확히 당신이 그 일을 막으려 고합니다. – Matthias

+0

Login.class는 Matthias가 말했듯이 변수가 될 수 있습니다. 업데이트 된 답변을 참조하십시오. –

1


try {
  String className = 'com.www.tutorialforandroid.com.openActivity';
  Intent openNewIntent = new Intent(this, Class.forName(className));
  startActivity( openNewIntent);
} catch (ClassNotFoundException e) {
  e.printStackTrace();
}

0

당신은 내가 MyClass의 가정이

Intent intent = new Intent(); 
String packageName = "my.package"; 
String className = "com.package.MyActivity"; 
intent.setClassName(packageName, className); 
startActivity(intent); 
관련 문제