我需要将数据从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");
但意图没有额外内容
请参阅下面的屏幕截图
答案 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)
你可以尝试这样做,看看你是否得到额外的东西:
创建意图时:
Intent intent = new Intent(this, LoadActivity.class);
但很可能你正在处理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");