我不知道为什么,但这不工作,我认为应该这样做。 在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 :(得分:0)
您需要使用v.getContext()
或方法YourActivity.this
更改getApplicationContext()
。如果您使用的是片段,请使用getActivity()
方法。在onClick
方法中,请使用startActivity(intent);
代替v.getContext().startActivity(intent);
。
希望它有所帮助。
答案 1 :(得分:0)
哦,我愚蠢而盲目:(通过双并阅读长。 putExtra隐藏了这种类型不匹配。
答案 2 :(得分: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);
第一个活动是托管按钮和常量的活动。希望有所帮助
答案 3 :(得分:0)
我认为,您正在传递来自double
的{{1}}值并尝试从MainActivity
long
中获取Intent
值,这可能会导致问题。
更新您的MapActivity
,MapActivity
方法,如下所示:
onCreate()