【问题标题】:Android send value from Fragment to an activityAndroid 将值从 Fragment 发送到 Activity
【发布时间】:2017-08-14 16:57:59
【问题描述】:

大家好,我有显示 Google 地图的片段活动,我想将纬度和经度值发送到我的一项活动。但是除了putExtra,我怎么能做到这一点。我无法使用 putExtra,因为数据完成后我无法启动活动。我有底部导航活动,它显示地图片段以及另一个片段中的设置活动。我想从地图片段中收集数据并在第二个片段中使用它。谢谢。

【问题讨论】:

标签: android google-maps android-fragments


【解决方案1】:

您可以使用共享偏好来做到这一点。

示例:

在您的片段活动中将值放入 Shared Preference 中。

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

希望对你有帮助:)

【讨论】:

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

你可以这样做:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 2013-09-27
    相关资源
    最近更新 更多