将字符串从活动B发送到活动A的片段F.

时间:2013-11-06 08:10:52

标签: android android-fragments

我有两个活动(A& B),我的片段F包含在活动A中。我想将活动B中的字符串发送到片段F.我怎么能这样做?这是我的代码:

ACTIVITY B

public final static String EXTRA_MESSAGE = "com.sample.MESSAGE";

// onClick get button from activity B layout
public void get(View view) {
    Intent intent = new Intent(this, ActivityA.class);
    TextView textView = (TextView)findViewById(R.id.coordinates);
    String message = textView.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    startActivity(intent);
}

FRAGMENT F

EditText editText;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    String num = getActivity().getIntent().getStringExtra("EXTRA_MESSAGE");

    View v = inflater.inflate(R.layout.tab1, container, false);

    // EditText from fragment F layout
    editText = (EditText) v.findViewById(R.id.edit_coordinates);    
    editText.setText(num);
    return v;
}

我在设备上运行时没有出现任何错误,但是我没有将字符串添加到我的EditText中

5 个答案:

答案 0 :(得分:4)

您应该传递正确的值。

    String num = getActivity().getIntent().getStringExtra("com.sample.MESSAGE"); 

答案 1 :(得分:1)

您尝试使用常量名称作为文字检索传递的字符串,而不是您应该尝试的常量内容:

String num = getActivity().getIntent().getStringExtra(ActivityB.EXTRA_MESSAGE);

或:

String num = getActivity().getIntent().getStringExtra("com.sample.MESSAGE");

希望它有所帮助。

答案 2 :(得分:1)

您应该将"EXTRA_MESSAGE"替换为片段

中的"com.sample.MESSAGE"

所以替换

 String num = getActivity().getIntent().getStringExtra("EXTRA_MESSAGE");// OR Double quotes

String num = getActivity().getIntent().getStringExtra("com.sample.MESSAGE");

答案 3 :(得分:0)

取决于你是想通过耦合方式还是以解耦方式传递字符串。

您可以使用Fragment的默认静态实例,然后传入一个包含字符串作为参数的包。

您可以使用字符串作为参数初始化Fragment的非默认构造函数,但不建议这样做。

或者,如果你想以解耦的方式做到这一点,你可以使用Greenrobot的Eventbus将你的字符串从活动传递给片段。查看文档,看看它是否符合您的目的。

答案 4 :(得分:0)

试试这个:

String num = getArguments().getStringExtra("EXTRA_MESSAGE");