2017-05-02 52 views
0

我不知道爲什麼,但是這個不是工作,我認爲它應該。在mainAcitivity 通數據:無法在活動之間傳遞數據

@Override 
     public void onClick(View v) { 
      Intent intent = new Intent(v.getContext(), MapActivity.class); 
      intent.putExtra(MapActivity.LATITUDE_EXTRA_KEY, latitude); 
      intent.putExtra(MapActivity.LONGITUDE_EXTRA_KEY, longitude); 
      v.getContext().startActivity(intent); 
     } 

比第二活動

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_map); 

    Intent intent = getIntent(); 
    if (intent != null) { 
     mLat = intent.getLongExtra(LATITUDE_EXTRA_KEY, mLat); 
     mLong = intent.getLongExtra(LONGITUDE_EXTRA_KEY, mLong); 
    } 
} 

什麼我錯過了獲取數據?

回答

0

哦,我是啞巴和盲人:(傳遞和閱讀。 putExtra隱藏了該類型不匹配。

0

您需要將v.getContext()更改爲YourActivity.this或方法getApplicationContext()。如果您正在使用片段,請使用getActivity()方法。在onClick方法中,請使用startActivity(intent);而不是v.getContext().startActivity(intent);

希望它有幫助。

+0

甚至沒有必要那麼做,只是'startActivity(意向)'將正常工作。 –

+0

@Alex Thx快速響應,我已經找到了我的問題所造成的。 v.getContext沒有問題,因爲它在onClick中** v **被點擊的視圖。 – ThinkDeep

+0

問題是由上述問題之一引起的嗎? –

0

分析你的代碼,幾秒鐘後,我終於發現了問題。您嘗試在尚未創建的活動中使用常量(MapActivity.LONGITUDE_EXTRA_KEY, MapActivity.LATITUDE_EXTRA_KEY),以下是解決方案,將所有常量移至第一個活動,並將onClick方法中的代碼更改爲:

Intent intent = new Intent(v.getContext(), MapActivity.class); 
      intent.putExtra(LATITUDE_EXTRA_KEY, latitude); 
      intent.putExtra(LONGITUDE_EXTRA_KEY, longitude); 
      v.getContext().startActivity(intent); 

和你MapActivity這個onCreate()方法,以這樣的:

Intent intent = getIntent(); 
    if (intent != null) { 
     mLat = intent.getDoubleExtra(FirstActivity.LATITUDE_EXTRA_KEY, mLat); 
     mLong = intent.getDoubleExtra(FirstActivity.LONGITUDE_EXTRA_KEY, mLong); 

的第一個活動是舉辦兩個按鈕,您的常量活動。希望它能幫助

+0

不是,** psfs **。 – ThinkDeep

+0

好吧,這個psfs是什麼意思? – DevMike

+0

** public static final String ** 試着寫它Android Studio – ThinkDeep

0

我想,你是從MainActivity傳遞double值,並試圖讓MapActivityIntentlong值,這可能會造成問題。

更新您的MapActivityonCreate()方法如下:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_map); 

    Intent intent = getIntent(); 
    if (intent != null) { 
     mLat = intent.getDoubleExtra(LATITUDE_EXTRA_KEY, 0.0f); 
     mLong = intent.getDoubleExtra(LONGITUDE_EXTRA_KEY, 0.0f); 
    } 
}