Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android将值从片段发送到活动_Android_Google Maps_Android Fragments - Fatal编程技术网

Android将值从片段发送到活动

Android将值从片段发送到活动,android,google-maps,android-fragments,Android,Google Maps,Android Fragments,大家好,我有一个显示谷歌地图的片段活动,我想把纬度和经度值发送到我的一个活动中。但我怎么能做到这一点,除了额外的。我不能使用putExtra,因为我不能在数据完成后启动Tactivity。我有一个底部导航活动,它显示地图片段,也在另一个片段中设置活动。我想从Map片段中收集数据,并在第二个片段中使用它。谢谢。您可以使用共享首选项来完成此操作 示例: 将值放入片段活动中的共享首选项中 SharedPreferences sharedPref = getActivity().getPreferenc

大家好,我有一个显示谷歌地图的片段活动,我想把纬度和经度值发送到我的一个活动中。但我怎么能做到这一点,除了额外的。我不能使用putExtra,因为我不能在数据完成后启动Tactivity。我有一个底部导航活动,它显示地图片段,也在另一个片段中设置活动。我想从Map片段中收集数据,并在第二个片段中使用它。谢谢。

您可以使用共享首选项来完成此操作

示例:

将值放入片段活动中的共享首选项中

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putDouble("latitude", latitude);
editor.putDouble("longitude", longitude);
editor.apply();
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
double latitude = sharedPref.getDouble("latitude");
double longitude = sharedPref.getDouble("longitude");
从您的第二个活动中的共享首选项中获取价值

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putDouble("latitude", latitude);
editor.putDouble("longitude", longitude);
editor.apply();
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
double latitude = sharedPref.getDouble("latitude");
double longitude = sharedPref.getDouble("longitude");
希望有帮助:)

您可以这样做:

public class MyFragment extends Fragment{
    private MyActivity myActivity = null;

    public void setActivity(MyActivity myActivity){
        this.myActivity = myActivity;
    }

    //Call this method when you want to pass the values to the activity
    private void passLatLong(String lat, String longt){
        if(myActivity!=null){
            myActivity.setLatLong(lat,longt);
        }
    }
}
在你的活动中:

public class MyActivity extends AppCompatActivity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
         //MyFragment myFragment = ... Define your fragment instance
         myFragment.setActivity(this);
    }

    public void setLatLong(String lat, String  longt){
         //Fragment will call this method
    }
}

这里回答了可能重复的Reis问题A:请问这如何解决我的问题?我不想在第二个活动中设置值。我想将地图碎片活动的值发送到我的第二个活动。谢谢,我也有这个想法,但你认为这是一个很好的解决方案,比如说20个纬度和经度?谢谢。你不制作一个单例来存档吗?我从Firebase数据库下载数据(纬度和经度),然后在需要时将其发送到另一个活动。是的,你可以将其临时存储在单例对象中,并在另一个活动中使用