当前位置: 首页 > 知识库问答 >
问题:

Android将信息从活动发送到其片段

那利
2023-03-14

我有一个活动,它从其他活动中获取一些字符串:

public class ShowPoints extends AppCompatActivity {

    public String points;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show_points);

        Intent i = getIntent();
        points = i.getStringExtra("geoPoints");
    }
}

这行得通。

从这个活动< code>ShowPoints中,我想将接收到的字符串< code>points发送到它的片段< code>PointsOnMap

为此,我创建了片段PointsOnMap并执行以下操作:

public class PointsOnMap extends Fragment implements OnMapReadyCallback {
      ......
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        act = new ShowPoints();
        String points = act.points;
        mView = inflater.inflate(R.layout.activity_points_on_map, container, false);
        return mView;
    }

但是,片段<code>PointsOnMap<code>的<code>字符串点

我想知道我做错了什么。我在这里阅读了其他一些帖子,似乎我正在以正确的方式做到这一点。

----EDIT----

我对代码所做的最后编辑似乎不起作用,我很确定问题出在我传递参数的部分,因为,如果没有参数传递,一切都正常,初始地图也显示出来了。

因此,到目前为止,包含类的活动如下:

public class ShowPoints extends AppCompatActivity {

    public String points;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show_points);

        Intent i = getIntent();
        points = i.getStringExtra("geoPoints");

        PointsOnMap pointsOnMapFragment = new PointsOnMap();
        Bundle bundle = new Bundle();
        bundle.putString("geoPoints",points);
        pointsOnMapFragment.setArguments(bundle);

        Log.d("REACHED HERE","---------");
    }
}

我检索传递的字符串的那部分片段是这样的:

public class PointsOnMap extends Fragment implements OnMapReadyCallback {
      ......
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        Bundle args = getArguments();
        geopoints = args.getString("geoPoints");
        mView = inflater.inflate(R.layout.activity_points_on_map, container, false);

        return mView;
    }

由于某种原因,它仍然不工作......回溯指示geopoint=args.getString("GeoPoint")上的片段上的空对象引用

共有3个答案

巢权
2023-03-14

我以前遇到过同样的问题,在传递意图数据时,您可能会遇到很多问题,同时仍然在同一线程中,所以我建议将数据存储到SharePrefrence中,然后使用意图传递它,例如:

public String points;
Intent i = getIntent();
SharedPreferences settings = getSharedPreferences("pref", MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString("geoPoints", "geoPoints");
editor.commit();`
points = i.getStringExtra(getSharedPreferences("pref",MODE_PRIVATE).getString("geoPoints",""));
杜英范
2023-03-14

如果你想在创建片段时传递信息,你需要调用setArgument,这里有一个https://stackoverflow.com/a/17436739/6726261的例子

如果您需要在片段创建后传递数据,您可以在片段中定义一个回调函数来应用,Android doc就是一个很好的例子https://developer.android.com/guide/components/fragments.html#CommunicatingWithActivity

鲜于仰岳
2023-03-14

当您从 ShowPoints 活动中替换/添加 PointsOnMap 片段时:

PointsOnMap pointsOnMapFragment = new PointsOnMap();
    Bundle bundle = new Bundle();
    bundle.putString("geoPoints",geoPoints);
    pointsOnMapFragment.setArguments(bundle);

并在碎片使用上获取地质点:

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    String geoPoint = getArguments().getString("geoPoints");
}

对于将数据从活动传递到活动,我们使用意图对象,对于将数据从活动传递到片段或片段到片段,我们使用片段的setArgument(Bundle bundle)方法来携带数据。

 类似资料:
  • 我想在片段的活动中使用一些文本视图(cityField,updatedField)。我知道在活动中使用它们会更容易,但问题是,由于要获取一些JSON数据,我不得不在Fragment上加入一些代码 我已经得到了活动代码的ID 现在我想在我的片段中使用它们 所以问题是 - 这可能吗?如果可能,如何? 我已经检查了这个网站上的一些答案 - 在Android中将数据从活动发送到片段 如何使用捆绑包将数据从

  • 我需要拍照并发送到主活动并发送到第三活动 这是MainActivity的代码 我有任何错误,但当我试图拍摄一张照片时,我得到这样的信息:不幸的是,第一相机停止了,我的问题是什么?

  • 我有一个关于片段的问题。场景是:我登录后,我在一个有3个片段的活动上。对于我使用ViewPager的片段。现在我必须在我的一个片段中使用登录用户名。我买了用户名从登录页面使用putExtra.我的问题是如何把用户名带到片段中??

  • 次要活动(通过意图向主活动发送“endpoint”字符串): 主活动(从次要活动获取字符串): 在Fragment类上,我试图在TextView上显示数据: 如何修复它并将字符串从一个活动发送到另一个活动上的片段? 下面是XML:

  • 我需要将数据从片段发送到另一个活动 我在Homeactive下的LoadsFraank中使用此代码 在另一个活动(LoadActivity)中接收数据 但是意图没有附加条件 请看下面的截图

  • 在我的应用程序中,我试图将数据从我的发送到一个名为的服务。这是我的以下代码: MainActivity.class: BGS服务。课程: 但我没有在服务类中获取数据。以下是我得到的错误: 02-25 09:05:41.166:E/AndroidRuntime(2633): JAVAlang.RuntimeException:无法启动活动 组件信息{com.microapple.googleplac