Android将片段中的值发送到活动

时间:2017-08-14 16:57:59

标签: android google-maps android-fragments

大家好我有Fragment活动,显示谷歌地图,我想将纬度和经度值发送到我的一个活动。但除了putExtra之外我怎么能这样做呢。我不能使用putExtra,因为在数据完成后我无法启动startActivity。我有BottomNavigation活动,它也显示了另一个片段中的地图片段和设置活动。我想从Map片段中收集数据并在第二个片段中使用它。感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用共享首选项来执行此操作。

示例:

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

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");

希望有所帮助:)

答案 1 :(得分:0)

你可以这样做:

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
    }
}