2013-11-04 1 views
0

좋아요. 나는 3 가지 다른 활동을 호스팅하는 탭 호스팅 활동을 가지고 있습니다. 그래서 activity1에서 나는 GPS로부터 얻을 수있는 위도와 경도의 가치를 가지고 있습니다. 그래서 질문은 activity2에서 동적으로 사용되는 activity1의 가치를 어떻게 얻을 수 있습니까? 의도를 사용하면 전달 된 값은 activity1의 마지막 값입니다. 내가 필요로하는 것은 activity1이 여전히 (백그라운드에서) 실행 중이고 OnLocationChanged 메소드에서 값을 캡쳐 한 다음 그 값을 액티비티 2로 보낸다.다른 활동에서 가치를 얻으십시오 android

나는 액티비티 1에서 메소드를 만든 다음 액티비티 1의 또 다른 인스턴스를 생성했다. 작동하지 않습니다.

activty1 x = new activity1(); 
double lat = x.getLatitude(); 
+4

당신은 작성해서는 안 Activity 클래스의 인스턴스 인 텐트를 사용하여 값을 전달할 수 있습니다. 'startActivityForResult'도 사용할 수 있습니다. Activity는 생명주기를 가지고 있고 startActivity에 의해 시작됩니다. – Raghunandan

+0

sharedPreference에 주기적으로 값을 넣고 두 번째 액티비티에서 값을 정기적으로받는 Handler를 만드는 Handler를 만들 수 있습니다. –

+0

브로드 캐스트 수신자를 사용하여 수신 작업의 업데이트를 처리하고 인 텐트를 사용하여 새 업데이트를 시작합니다. Raghunandan은 startActivityForResult를 제안했습니다. perdiodiccaly 이벤트를 처리하는 경우 Broadcastreceiver가 더 좋은 방법입니다. – Tobrun

답변

1

당신은 활동을 만들 수 있습니다 통과는 엑스트라 :

지능 ACT1

Intent i = new Intent(Act1.this, Act2.class); 
i.putExtra("someData", 100); 
startActivityForResult(i,0); 

을 ACT2에

int x = getIntent().getExtras().getInt("someData"); 
x++; 
Intent i = getIntent(); 
i.putExtra("someModifiedData", x); 
setResult(ActivityInfo.DrawingABlank, i); 
finish(); 

ACT1에서

onActivityResult(int requestCode, int resultCode, Intent data){ 
    int y = data.getExtras().getInt("someModifiedData"); 
} 
+0

감사합니다.하지만 act2에서는 값이 바뀔 때마다 getintent()) 메소드가 수신됩니까? – user2108272

+0

한 번에 하나의 활동 만 포 그라운드에있을 수 있습니다. 활동이 재 작성 될 때마다 데이터가 갱신됩니다. Act2가 forground에있는 동안, Act1은 onPause 상태로 들어가고 onActivityResult가 호출 될 때까지 정지합니다. 포어 그라운드에 관계없이 코드 세그먼트를 실행해야하는 경우 '서비스'를 사용하는 것이 좋습니다. –

+1

값이 바뀔 때마다'startActivityForResult'를 호출해야합니다. putExtra에 의해 다른 액티비티에 전달되어야하는 값이 가변적이라고 가정합니다. – mgokgoz

0

는 MainActivity에 두 개의 활동 MainActivity, SecondActivity

을 만듭니다

Intent intent=new Intent(MainActivity.this,SecondActivity.class).putExtra("message","your text"); 

    startActivityForResult(intent,100); 

/// under onActivityResult 
 

 
onActivityResult(int requestCode, int resultCode, Intent data){ 
 
    if (requestCode == 100) { 
 
    String message=data.getStringExtra("message2"); 
 
} 
 
}

SecondActivity: 
 

 
String text = getIntent().getStringExtra("message"); 
 
Intent intent=new Intent(); 
 
       intent.putExtra("message2","MESSAGE"); 
 
       setResult(SecondActivity.RESULT_OK,intent); 
 
       finish();