未能在活动之间传递数据

时间:2017-05-02 14:46:18

标签: android android-intent android-activity

我不知道为什么,但这工作,我认为应该这样做。 在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);
    }
}

我错过了什么?

4 个答案:

答案 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值,这可能会导致问题。

更新您的MapActivityMapActivity方法,如下所示:

onCreate()