2017-05-02 51 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); 
    } 
}