2012-03-08 6 views
3

"m_lat"및 "m_lng"멤버 변수가 "onCreate"및 "onClick"호출간에 사이에 지속되지 않지만 getIntent()에서 반환 된 Intent 이 ?"Activity"클래스의 멤버 변수 지속성

코드는 다음 (나는 .xml 파일이 관련이없는 생각) :

public class MyActivity extends Activity implements OnClickListener { 

     int m_lat, m_lng; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     Intent i = getIntent(); 
     m_lat = i.getIntExtra("LAT", -1); 
     m_lng = i.getIntExtra("LNG", -2); 

       // here, m_lat m_lng have good values 

    } 

    @Override 
    public void onClick(View v) { 

     Intent oldInt = getIntent(); 

     int new_lat = oldInt.getIntExtra("LAT", 0); 
     int new_lng = oldInt.getIntExtra("LNG", 0); 

      // here, m_lat and m_lng are 0, but 
      // new_lat and new_lng are now valid 

    } 

} 

TKS를!

답변

1

Pls, Android 개발자 문서를 확인하십시오. API 레벨 1은 의도에서 확장 된 데이터를 검색합니다 때문에

공공 INT 보려면, getIntExtra

(문자열 이름, DEFAULTVALUE를 INT).

매개 변수

name : 원하는 항목의 이름입니다.

defaultValue : 이름으로 원하는 유형의 값이 저장되지 않은 경우 값이 반환됩니다.

반환

이전에 putExtra (과 추가 항목의 값) 또는 아무것도 발견되지 않은 경우 기본값.

http://developer.android.com/reference/android/content/Intent.html#getIntExtra(java.lang.String, int)

+0

나는 당신이 내 지점을 놓친 것 같아요. "onCreate"메서드에서이 클래스는 두 개의 멤버 변수 (m_lat, m_lng)를 설정합니다. 그러나 "onClick"메서드에서 m_lat 및 m_lng 값은 손실됩니다. 나는 m_lat == new_lat과 m_lng == new_lng를 기대하지만, 사실이 아니다. 멤버 변수가 호출간에 지속되지 않는 이유를 알고 싶습니다. – uncle4

+0

코드를 다시 확인하거나 프로젝트를 다시 빌드하십시오. 코드의 어떤 지점에서 m_lat 및 m_lng 값을 변경할 수 있습니다. 나는 당신이 준 코드에 아무런 문제가 없다. – PhatHV