当前位置: 首页 > 知识库问答 >
问题:

在两个片段之间传递字符串时获取NullPointerException[重复]

陈翰林
2023-03-14

我有两个动态片段与一个活动相关联,我试图使用Bundle将一个文本从第一个片段传递到第二个片段,但我得到了空指针异常。在两个片段之间传递字符串是正确的方法吗?下面是我的代码:

public class FirstFragment extends Fragment {

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



        View view = inflater.inflate(R.layout.content_main, container, false);

        String text = "GetThisStringInSecondFragment";

        TextView txtView = null;
        txtView = (TextView) view.findViewById(R.id.firstfragmenttext);
        txtView.setText(text);

        Bundle bundle = new Bundle();
        bundle.putString("HI", text);

        return view;
    }


}
public class SecondFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.content_secondmain,
                container, false);

        TextView txtView = null;
        txtView = (TextView) view.findViewById(R.id.secondfragmenttext);


        Bundle bundle = this.getArguments();
        String myInt = bundle.getString("HI");

        txtView.setText(myInt);

        return view;
    }


}
public class MainActivity extends AppCompatActivity {


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btnLoad = (Button) findViewById(R.id.btn_load);

        View.OnClickListener listener = new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                FragmentManager fragmentManager = getFragmentManager();
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                FirstFragment hello = new FirstFragment();
                fragmentTransaction.add(R.id.fragment_container, hello, "HELLO");
                fragmentTransaction.commit();

                FragmentManager fragmentManager2 = getFragmentManager();
                FragmentTransaction fragmentTransaction2 = fragmentManager2.beginTransaction();
                SecondFragment hello2 = new SecondFragment();
                fragmentTransaction2.add(R.id.fragment_container, hello2, "HELLO");
                fragmentTransaction2.commit();
            }
        };

        btnLoad.setOnClickListener(listener);

    }


}

共有1个答案

向弘懿
2023-03-14

您在第二个片段中执行getArguments,但是您将第一个片段中的这些参数发送到哪里。您可以在这里使用Interface并在Activity中定义它。在activity中,可以对第二个片段使用setArgument()方法。

请查看以下链接以获得更详细的信息和步骤。https://developer.android.com/training/basics/fragments/communicating.html

 类似资料:
  • 问题内容: 我需要从两个字符之间获取字符串。我有这个 并且必须在一个变量中分别返回4个字符串: 问题答案: 有。由于它接受正则表达式字符串,并且是正则表达式中的特殊字符,因此您需要对其进行转义(带有反斜杠)。而且,由于是在Java中字符串字面特殊字符,你需要逃脱 它 ,也一样,人们有时会感到迷惑。因此给出: 然后 将输出 ( 在 前三位上 有 尾随空格;如果需要,这些空格。)

  • 我需要在“新日期碎片”和“新事件框架”之间传递字符串 curDate,我看到很多人使用捆绑包,但使用这些我仍然具有空点例外。 我将日历视图转换为一个名为 curDate 的字符串。 我的日志: threadid=1:线程因未捕获的异常而退出(group=0x41640d88) 谢谢你的帮助!

  • 问题内容: 我从html解析中得到一个字符串,即 我的代码是这样的 我不确定我的第二个拆分字符串应该是“’”还是“’,” 我希望我的结果是 问题答案: 我将使用正则表达式从这样的复杂输入中提取子字符串。 Swift 3.1: Swift 2.0:

  • 问题内容: 我有以下测试(格式如下): 我正在尝试获取“测试部分:”和“我的部分”之后的文本 我用不同的RegEx模式进行了几次尝试,但结果一无所获。 如果我做: 然后,我得到正确的答复: 但是,如果我这样做 我没有结果。结果应为“我的第二 部分 ” 我也尝试过使用RegEx Multiline,但没有结果。 任何帮助,将不胜感激。 如果重要的话,我正在Python 2.7中进行编码。 如果不清楚

  • 问题内容: 想要改善这篇文章吗? 提供此问题的详细答案,包括引文和为什么答案正确的解释。答案不够详细的答案可能会被编辑或删除。 我需要一个函数来返回两个单词(或两个字符)之间的子字符串。我想知道是否有实现该功能的php函数。我不想考虑正则表达式(嗯,我可以做一个,但实际上并不认为这是最好的方法)。思维与功能。这是一个例子: 我们调用该函数: 它返回:“我想要一个蛋糕”。 提前致谢。 更新: 嗯,到

  • 问题内容: 什么是获取两个字符串之间内容的最佳方法,例如 由于某种原因,这似乎在我的代码中的一个地方起作用,而不是另一个地方。我会以正确的方式解决这个问题吗?或者,还有更好的方法? 输出缓冲区也是这样做的方法还是file_get_contents? 提前致谢! 问题答案: 使用代替,这样您就不必逃避它们。 该修改 品牌和还包括换行。 并具有各种功能,例如的n到m倍。 基础的 各种标签等的高级(Ja