我有两个活动(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中
答案 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");