0

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

活动乙

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

片段 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

4

5 回答 5

4

您应该传递正确的值。

    String num = getActivity().getIntent().getStringExtra("com.sample.MESSAGE"); 
于 2013-11-06T08:12:53.887 回答
1

您应该在片段中替换"EXTRA_MESSAGE""com.sample.MESSAGE"

所以替换

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

String num = getActivity().getIntent().getStringExtra("com.sample.MESSAGE");
于 2013-11-06T08:29:11.403 回答
1

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

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

或者:

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

希望能帮助到你。

于 2013-11-06T08:16:07.567 回答
0

尝试这个 :

String num = getArguments().getStringExtra("EXTRA_MESSAGE");
于 2013-11-06T08:43:48.440 回答
0

取决于您是否要传递字符串,无论是耦合方式还是解耦方式。

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

您可能可以使用字符串作为参数为 Fragment 初始化非默认构造函数,但不推荐。

或者,如果您想以解耦的方式进行操作,您可以使用 Greenrobot 的 Eventbus 将您的字符串从活动传递到片段。去查找文档,看看它是否符合您的目的。

于 2013-11-06T08:16:53.350 回答