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

将意图发送到其他活动有什么错?

巴洲
2023-03-14

我知道如何使用ArrayList发送捆绑包,但我的代码会导致NullPointerException。但我不知道为什么。

主要活动

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.act1);
    context = getApplicationContext();
    txtName = findViewById(R.id.name);
    txtDepartment = findViewById(R.id.department);
    txtUndergred = findViewById(R.id.undergred);
    txtUrl = findViewById(R.id.url);
    txtPhone = findViewById(R.id.phone);
    btnphone = findViewById(R.id.btnphone);
    btnlogin = findViewById(R.id.btnlogin);
    btnweb = findViewById(R.id.btnweb);

    btnlogin.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String name = txtName.getText().toString();
            String department = txtDepartment.getText().toString();
            String undergrad = txtUndergred.getText().toString();
            Bundle Sender = new Bundle();
            ArrayList list = new ArrayList<>();
            list.add(name);
            list.add(department);
            list.add(undergred);
            Sender.putStringArrayList("list", list);
            ArrayList shit = Sender.getStringArrayList("list");
            Intent intent = new Intent(getApplicationContext(),MainActivity2.class);
            intent.putExtra("Sender", Sender);
            startActivity(intent);
        }
    });
}

维护活动2(此处接收)

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.act2);
        txtUrl = findViewById(R.id.url);
        txtPhoneNum = findViewById(R.id.phoneNum);
        button0 = findViewById(R.id.goback);
        Intent passedIntent = getIntent();
        if (passedIntent != null) {
            Bundle mybundle = passedIntent.getBundleExtra("Sender");
            ArrayList list = mybundle.getStringArrayList("Sender");
            Toast.makeText(getApplicationContext(), "Student info: "
                    +list.get(0)+list.get(1)+list.get(2),duration).show();
        }
        String Url = txtUrl.getText().toString();
        String PhoneNum = txtPhoneNum.getText().toString();
}

这里,哪一部分错了Arraylist被添加到捆绑包中,但每次抛出NullPointerException时。

共有1个答案

马梓
2023-03-14

你在传递一个键,然后试图用另一个键获取值,这是错误的。为了清楚你的理解,让我给你举个例子→

凯斯:你店里有很多T恤衫。你订购了一些T恤衫出售,只得到了红色绿色T恤衫。现在,当一个顾客来问他黄色T恤时,你说它不在那里。这在编码术语中称为null。你这边也是这样。让我们检查一下解决方案。

当你用一个键发送一个值时,用同一个键接收它。试试这个代码。

super.onCreate(savedInstanceState);
        setContentView(R.layout.act2);
        txtUrl=findViewById(R.id.url);
        txtPhoneNum=findViewById(R.id.phoneNum);
        button0=findViewById(R.id.goback);
        Intent passedIntent= getIntent();
        if(passedIntent != null){
            Bundle mybundle= passedIntent.getBundleExtra("Sender");
            ArrayList list= mybundle.getStringArrayList("list");
            Toast.makeText(getApplicationContext(), "Student info: "
                    +list.get(0)+list.get(1)+list.get(2),duration).show();
        }
        String Url=txtUrl.getText().toString();
        String PhoneNum=txtPhoneNum.getText().toString();

不要试图看到toast中的值。我在这里看到:

Toast.makeText(getApplicationContext(), "Student info: "
                    +list.get(0)+list.get(1)+list.get(2),duration).show();

尝试调试或在日志中显示它。

 类似资料:
  • 问题内容: 我对android非常陌生,我正在尝试将用户输入的数据(他们的名字)发送到另一个活动。过去,我可以使用Intent在活动之间发送单行代码,但是我无法解决如何向两个不同的TextView发送两个不同的字符串。 这是到目前为止我的MainActivity代码: 我第二项活动MainGame的代码: 当我运行它时,我得到了两个TextView中都为“ name2”添加的内容。我需要做些什么来

  • 拍照: 相册: OnActivityResult:用户意图发送图像uri

  • 问题内容: 我的应用程序中包含许多产品的网格。当用户选择网格中的一个项目时,我将启动一个新的“对话框”框,并显示该项目的名称,数量和图像。但是我不能动态发送图像源。 这是我的代码 我应该使用什么来从ImageView获取图像源? 问题答案: 像这样使用Bundle

  • 为什么我的代码不起作用?我想把图像从一个活动转移到另一个活动。请帮忙!注意:我已经创建了一个摄像头功能,这就是我获得图像的地方。 这是主要活动。Java语言 这就是结果性。Java语言 如果我做错了什么请告诉我谢谢

  • 从包A中,我从特权包B触发了正在运行的服务。包B执行包A的更新。目标设备正在使用Android 9(API Level 28)。更新成功(应用程序版本代码已更改)。但我的问题是更新后,包A在后台;在我的设备上,它在后台应用程序列表中,我必须手动按下它才能将其带到前台。 我希望它在安装后回到前台。 我尝试了什么: > 在安装后从包B向包a发送广播意图;看起来在包的广播接收器上没有接收到意图(可能是因

  • 我有一个活动,它从其他活动中获取一些字符串: 这行得通。 从这个活动< code>ShowPoints中,我想将接收到的字符串< code>points发送到它的片段< code>PointsOnMap 为此,我创建了并执行以下操作: 但是,片段<code>PointsOnMap<code>的<code>字符串点 我想知道我做错了什么。我在这里阅读了其他一些帖子,似乎我正在以正确的方式做到这一点。