Android 使用Bundle将textview从一个片段更新到另一个片段不起作用

Android 使用Bundle将textview从一个片段更新到另一个片段不起作用,android,android-fragments,android-fragmentactivity,Android,Android Fragments,Android Fragmentactivity,我遵循了使用bundle将数据从一个片段发送到另一个片段的代码示例,但是我想要显示包含字符串的bundle值的textview没有显示存储的值 字符串值是获取用户从listview中单击的电话号码联系人,下面的toast行显示它已成功获取该姓名 在下面的示例中,我多次重写代码以将字符串值发送到片段,但我运气不好 选择ModemFragment // Set the ListViews OnItemClick Listener display_contacts1.setO

我遵循了使用bundle将数据从一个片段发送到另一个片段的代码示例,但是我想要显示包含字符串的bundle值的textview没有显示存储的值

字符串值是获取用户从listview中单击的电话号码联系人,下面的toast行显示它已成功获取该姓名

在下面的示例中,我多次重写代码以将字符串值发送到片段,但我运气不好

选择ModemFragment

 // Set the ListViews OnItemClick Listener
            display_contacts1.setOnItemClickListener(new AdapterView.OnItemClickListener()
            {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id)
                {
                    String namedisplay = arrayAdapter.getItem(position); //<<<<<<<<<< this gets the phone name

                    Toast.makeText(view.getContext(), namedisplay + " Selected for Communication", Toast.LENGTH_SHORT).show();
                    Toast.makeText(view.getContext(), phoneNo, Toast.LENGTH_SHORT).show();

                    // Using bundle to send data
                    Bundle bundle = new Bundle();
                    bundle.putString(namedisplay, "namevalue");

                    // Begin transaction to command window
                    FragmentTransaction transaction = getFragmentManager().beginTransaction();
                    CommandsFragment modemFragment = new CommandsFragment();
                    modemFragment.setArguments(bundle); // Data to be send to commands fragment
                    transaction.replace(R.id.frame_layout, modemFragment);
                    transaction.commit();

                    //modemView.setText(namedisplay);
                }
            });
 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        View view = inflater.inflate(R.layout.fragment_commands_view, container, false);

        modemView = (TextView) view.findViewById(R.id.modem_view);

        if (display_contacts.isEmpty())
        {
            number = null;

            // No contacts selected from the Add Modem listview
            modemView.setText("No contact selected");
        }
        else
        {
            Bundle bundle = getArguments();
            modemView.setText(String.valueOf(bundle.getString("namevalue")));
        }

        return view;
}

这是你的问题:

bundle.putString(namedisplay, "namevalue");
应该是

bundle.putString("namevalue", namedisplay);

首先输入键,然后输入值。

试试这个
bundle.putString(“namevalue”,namedisplay)
将此
bundle.getString(“namevalue”)
更改为
bundle.getString(namedisplay)
namedisplay
-应该是键的实际名称。但是所有其他行都可以吗?从您粘贴的内容来看似乎是这样。Bundle是一个映射,它作为一个映射工作——您根据键存储值。您必须始终将键放在第一位,将值放在第二位。您的代码显示您将值作为一个键,这就是为什么当您在map中查找'namevalue'时,它不会返回字符串,因为在我将行更改为bundle.putString(“namevalue”,namedisplay)的mapI中没有这样的键;但它仍然不起作用