액티비티 A, B 및 C가 있습니다. 액티비티 A에서 액티비티 C로 일부 데이터를 전달해야합니다. 네비게이션은 A에서 B, C에서 액티비티 A로 바로 이동할 수 없습니다. A에서 B로 데이터를 전달하고 싶지 않으며 sqlite 나 공유 환경 설정과 같은 외부 저장소를 사용하고 싶지 않습니다. 의도를 통해 할 수 있습니까? 그렇다면 어떻게? 그렇지 않다면 다른 방법이 있습니까?액티비티 1에서 액티비티 3까지의 데이터를 액티비티 2를 통과시키는 동안 직접 전달하지만 데이터는 액티비티 2로 전달하면 안됩니다.
답변
예 확인합니다. 당신이 다음 활동을 C로 활동가에서 데이터를 전달하려면
public interface PassData {
public void data(String data);
}
: 하나의 인터페이스를 만들
class ActivityA extend Activity{
public static String abc = "hello";
}
in ActivityC
ActivityC extend Activity{
onCreate(){
String a = ActivityA.abc;
Log.d("test",a);
}
}
나는 이것이 가장 적절하고 가장 짧은 해결책이라고 생각한다. – Nishith
액티비티 클래스 내의 정적 변수는 좋은 해결책이 아니다. –
내 오래된 주석을 읽었고, 나는 인터페이스 또는 정적 메서드를 사용한다고 말했다. @ n9153은 최상의 해결책으로 정적 방법을 발견했습니다. – LearnPainLess
다른 활동과 통신하기위한 인터페이스를 사용하십시오.
하거나 activity1에에 변수 public static
을 할 수
응답에 대한 감사 pawneshwar. 설명하고 좀 더 자세하게 설명해 주시겠습니까? – Nishith
예. 예 : 활동 내역 class ActivityA 확장 활동 { \t public static String abc = "hello"; } ActivityC에 ActivityC 연장 활동 { \t에서 onCreate() { \t \t 문자열 A = ActivityA.abc; \t \t Log.d ("test", a); \t} } – LearnPainLess
예제를 사용하여 새 응답을 확인하십시오. – LearnPainLess
다른 활동을 하나 개의 활동, 내가 가서 당신을 제안 있도록 의도를 사용할 수 없기 때문에 이제
에서 데이터를 전송하는 데는 여러 가지 방법이있을 수 있습니다 Application 클래스를 사용하거나 데이터를 저장할 전역 단일 클래스를 만듭니다. 1 단계 :
응용 프로그램 클래스를 생성하는 단계는 https://androidresearch.wordpress.com/2012/03/22/defining-global-variables-in-android/
링크를 다음 다음을 참조하십시오 모든 클래스를 만들고 응용 프로그램 클래스를 확장 :
public class Globals extends Application{
private int data=200;
public int getData(){
return this.data;
}
public void setData(int d){
this.data=d;
}
}
2 단계 : 정의 매니페스트 파일의 응용 프로그램 클래스 :
<application
android:name=".Globals"
.... />
3 단계 : 이제 calli 애플리케이션 클래스를 얻는 액티비티에서 getApplication()을 호출한다. 그냥 타입 변환하고 필요한 메소드를 호출하십시오.
Globals g = (Globals)getApplication();
int data=g.getData();
이 정보가 도움이되기를 바랍니다.
또한 정적 변수를 정의하는 쉬운 해결책은 권장하지 않습니다. –
아니요, ** ** 정적 싱글 톤을 사용하고,'Appication'을 읽어야합니다. javadocs :''일반적으로 Application을 서브 클래스 할 필요가 없습니다. 대부분의 경우, 정적 싱글 톤은 모듈화 된 방식으로 동일한 기능을 제공 할 수 있습니다. " – pskink
예 싱글 톤을 만드는 것이 좋은 해결책이며, 이것이 두 번째 옵션에서 제안한 것이지만 Activity 내에서 정적 변수를 만드는 것은 권장되지 않습니다. –
문제는 세 번째 활동에서 번들을 보낸 활동을 알 수있는 방법이 없다는 것입니다. 해당 번들의 유형을 식별하는 필드를 추가해야합니다. 따라서이 필드를 적절하게 처리 할 수 있습니다. 예를 들어, 활동 1 :
Intent i = new Intent(ActivityOne.this, ActivityTwo.class);
i.putExtra("activity", (int)1);
i.putExtra("key", value);
startActivity(i);
그리고 제 3 활동 :
Bundle extras = getIntent().getExtras();
if(extras !=null) {
int typeAct = extras.getInt("activity");
if (typeAct == 1) {
//do something with data
}
액티비티 예를 들면 을 활동 A로부터 당신은 같은 데이터를 전달해야 이 : 다음 활동 C에서 활동 A.
PassData passData;// make it global variable
passData.data("Your DATA WHICH YOU WANT TO SEND TO ACTIVITY C");
에 :
,ActivityC extends AppCompatActivity implements PassData{
//onCreate Stuff
@Override
public void data(String data) {
// print this data and see it's coming or not
}
- 1. 액티비티 스택의 액티비티 교체하기
- 2. Android 액티비티 여러 액티비티
- 3. 액티비티 스택의 액티비티 위치
- 4. 액티비티 whitout 시작 액티비티
- 5. ContactDetail Lockscreen 액티비티 액티비티
- 6. 액티비티
- 7. 안쪽에있는 안드로이드 액티비티 액티비티 메소드
- 8. 비동기 클래스의 Android 액티비티 액티비티
- 9. 액티비티 사이의 액티비티 전송하기 안드로이드
- 10. Android 액티비티 완료 이전 액티비티
- 11. 액티비티 파일로 고객 관리 액티비티
- 12. ActivityGroup의 액티비티
- 13. 액티비티 휴먼에서
- 14. 액티비티 폴더의 액티비티 텍스트 파일 열기
- 15. android에서 액티비티 X의 액티비티 X 시작하기
- 16. 안드로이드 - 키보드가 액티비티 대신 액티비티 아래에 표시됩니다.
- 17. 액티비티 전환/액티비티 간 데이터 교환
- 18. 새로운 ParseObject (Parse.com) 액티비티 간 액티비티 (안드로이드)
- 19. savechangestState 액티비티
- 20. 액티비티 부모
- 21. 조건부 액티비티 시작
- 22. 액티비티 저장 상태 -
- 23. Android 액티비티 출시 의도
- 24. 조각에서 액티비티 메서드 호출
- 25. 액티비티 간의 커스텀 트랜지션
- 26. Android 액티비티 이름 지정
- 27. onSaveInstanceState() 액티비티 및 프래그먼트에서?
- 28. Android 액티비티 업데이트
- 29. java.lang.NoClassDefFoundError - 액티비티 클래스
- 30. Android 자바 액티비티
그런 경우 정적 변수가 유일한 방법입니다. –
''왜 A로부터의 활동 B에 내 데이터를 전달하고 싶지 않습니다. ' "이유가 무엇입니까? – pskink
데이터가 활동 B에서 숨겨 지길 원합니다. – Nishith