我知道如何使用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
时。
你在传递一个键,然后试图用另一个键获取值,这是错误的。为了清楚你的理解,让我给你举个例子→
凯斯:你店里有很多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>字符串点 我想知道我做错了什么。我在这里阅读了其他一些帖子,似乎我正在以正确的方式做到这一点。