2012-03-08 27 views
3

爲什麼成員變量「m_lat」和「m_lng」在「onCreate」和「onClick」調用之間持續存在 ,但getIntent()返回的意圖 ?「活動」類中成員變量的持久性

(我認爲.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 

    } 

} 

韓國社交協會!

回答

1

請檢查Android開發者文檔。

公衆詮釋getIntExtra(字符串名稱,整數默認值)

自:API級別1檢索來自意圖擴展數據。

參數

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 2012-03-08 15:50:02

+0

請再次檢查您的代碼或重建您的項目。你可以在你的代碼中的某一點改變m_lat和m_lng的值。我對你提供的代碼沒有任何問題。 – PhatHV 2012-03-09 02:42:28