从活动到片段的文本视图中的字符串

时间:2017-06-21 08:12:27

标签: android android-fragments bluetooth

我有一个蓝牙阅读程序,它给了我一个我想要的字符串" print"进入片段的文本视图。字符串实时更新,因此不应该是一次性事件。

有趣的是,我可以将Text中的TextView文本传递给片段的TextView。然后我将String放入Activity TextView,然后从Activity TextView到Fragment Textview。

活动Textview是0dpx0dp所以没有人会看到它。

如何将String直接从MainActivity传递给Fragment的TextView?

这是活动:

        textAmanheceMenos.setText(dadosTratadosB);

这是片段:

        TextAmanheceMenos = (TextView) getActivity().findViewById(R.id.textAmanheceMenos);

        String MSG = TextAmanheceMenos.getText().toString();
        TextAmanheceEm.setText(MSG);

编辑:这是有效的。但我必须在活动中创建鬼文本视图。 " textAmanheceMenos"必须消除活动中​​的textview。 String" dadosTratadosB"必须直接进入" TextAmanheceEm.setText(dadosTratadosB)"。但这并不奏效。它说"无法解析符号"

即使我创建:

 DadosTratadosB = getActivity().findViewById(dadosTratadosB); 

我怎么能让它成功呢?

谢谢!

3 个答案:

答案 0 :(得分:0)

要将活动中的数据发送到片段,请使用以下命令:

Bundle bundle = new Bundle();
bundle.putString("KEY", "STRING to send");
// set Fragmentclass Arguments
Fragmentclass fragobj = new Fragmentclass();
fragobj.setArguments(bundle);

然后在你的片段中

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    String recivedString = getArguments().getString("KEY"); 
    //Do whatever you want with this string   
    return inflater.inflate(R.layout.fragment, container, false);
}

答案 1 :(得分:0)

我假设您的片段已附加到您的活动中,您需要多次向您的片段发送文本,而无需重新创建/重新附加片段。您可以使用本地广播接收片段中的短信:https://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html

或者,查看EventBus库:https://github.com/greenrobot/EventBus它更易于使用且更灵活。您可以从应用的任何部分发送消息,并添加子文件以在其他地方接收它们。

[edit]如果你只想在片段中设置一次文本,你可以将你的文本作为参数传递,如上面的答案所述,然后你的片段将包含你传递的文本

答案 2 :(得分:0)

创建DataTable以传递数据。见here

尝试使用以下代码从Intent传递真实数据的值

Activity

private void forwardActivityResult(Fragment f, int requestCode, int resultCode, Intent data) { if (f != null) { f.onActivityResult(requestCode, resultCode, data); } } } 内,您可以从fragment获取价值,并使用Intent data

TextView上设置
data.getStringExtra