如何将数据从片段发送到另一个活动?

时间:2017-10-26 12:30:58

标签: android android-fragments android-intent

我需要将数据从Fragment发送到另一个活动

我在HomeActivity下的LoadsFragment中使用此代码

Intent intent = new Intent(activity, LoadActivity.class);
intent.putExtra("loadsPosition",position);
activity.startActivity(intent);

在另一个活动(LoadActivity)中接收数据

Intent intent=getIntent();    
String loadsPosition = intent.getStringExtra("loadsPosition");

但意图没有额外内容

请参阅下面的屏幕截图

From fragment sending intent in second activity getting extras enter image description here

7 个答案:

答案 0 :(得分:7)

  

但意图没有额外内容

你的截图说它确实......

您的第二个屏幕截图显示processIntent(Bundle bundle),但第三个屏幕截图显示processIntent(Intent intent),因此您应该澄清哪些不起作用。但两个Bundles都不是null。

Fragments have their own startActivity method.您只需要父Activity创建Intent

Intent intent = new Intent(getActivity(), LoadActivity.class);
intent.putExtra("loadsPosition",position);
startActivity(intent);

最重要的是,你的位置是一个整数,但是你试图将它作为一个字符串,因此该字符串将为null

Intent intent=getIntent();    
int loadsPosition = intent.getIntExtra("loadsPosition", -1);

Intent不应该为null,它应该有一个Bundle。如果这个整数返回-1,则返回默认值,你应该用更小的例子调试更多

答案 1 :(得分:0)

你可以尝试这样做,看看你是否得到额外的东西:

  1. 创建意图时: Intent intent = new Intent(this, LoadActivity.class);

  2. 但很可能你正在处理getExtras()而不是intent本身。

    try{ processIntent(getIntent()); }catch(JSONException e){ ...

答案 2 :(得分:0)

您未附加额外内容:

Intent intent = new Intent(activity.this, LoadActivity.class);
Bundle bundle = new Bundle();
bundle.putInt("loadsPosition",pos);
intent.putExtras(bundle);
activity.startActivity(intent);

或:

Intent intent = new Intent(activity.this, LoadActivity.class);
intent.putExtra("loadsPosition",pos);
activity.startActivity(intent);

答案 3 :(得分:0)

片段使用

Intent intent = new Intent(getActivity, LoadActivity.class);
intent.putExtra("loadsPosition",position);
activity.startActivity(intent);
LoadActivity中的

String loadsPosition = getIntent().getStringExtra("loadsPosition");

答案 4 :(得分:0)

您可以使用Local Broad Cast Receiver或Interface将数据从片段传递到活动。

答案 5 :(得分:0)

  

您还可以直接获取片段中活动的意图额外数据。   如果您的活动意图中包含数据,请在您的代码中使用以下代码   片段:

Intent intent = getIntent().getStringExtra("position");

答案 6 :(得分:-1)

Actvity 1 Fragment:

 Intent intent = new Intent(getActivity(), SecondActivity.class);
 intent.putExtra("message", data); 
 startActivity(intent);

以这种方式检索第二个活动片段

 SecondActivity activity = (SecondActivity) getActivity();
 String data= activity.getIntent().getExtras().getString("message");