java - 在两个活动之间传递一个类实例Android
问题描述
我想制作一个从第一个活动获取用户输入并将这些值设置为一个类并在另一个活动中显示它们的应用程序。
当我尝试获取第二类中的值时,我遇到的错误是空指针异常。我不明白我做错了什么。
这是第一个活动:
public class MainActivity extends Activity {
EditText name, phone, type;
Button addBtn;
public final static String SER_KEY = "com.easyinfogeek.objectPass.ser";
public final static String Tag = "Yes";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addBtn = findViewById(R.id.button);
addBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SerializeMethod();
}
});
}
public void SerializeMethod(){
name = findViewById(R.id.name);
phone = findViewById(R.id.phone);
type = findViewById(R.id.type);
PhoneBookEntry book = new PhoneBookEntry();
book.setName(name.toString());
book.setPhone(phone.toString());
book.setType(type.toString());
Intent intent = new Intent(this, SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable(SER_KEY, book);
startActivity(intent);
}
}
第二个活动:
public class SecondActivity extends Activity {
final public static String Tag = "Yes";
TextView txt1, txt2, txt3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
txt1 = findViewById(R.id.textView1);
txt2 = findViewById(R.id.textView2);
txt3 = findViewById(R.id.textView3);
PhoneBookEntry book = (PhoneBookEntry) getIntent().getSerializableExtra(MainActivity.SER_KEY);
txt1.setText(book.getName());
txt2.setText(book.getPhone());
txt3.setText(book.getType());
}
}
这是 PhoneBookEntry 类:
public class PhoneBookEntry implements Serializable {
private static final long serialVersionUID = -7060210544600464481L;
private String name;
private String phone;
private String type;
--- getters and setters ---
}
解决方案
您只是忘记再次添加Bundle
您的Intent
检查代码
只需添加您Bundle
的Intent
使用intent.putExtras(mBundle);
它就可以正常工作
尝试这个
Intent intent = new Intent(this, SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable(SER_KEY, book);
intent.putExtras(mBundle);
startActivity(intent);
推荐阅读
- xcode - 如何修复flutter xcode ios EXC_CRASH(SIGABRT)异常问题
- mysql - mysql 5.7 和 Java 17 和 jconnect 8 的 keycloak 服务器 15.0.2 超时错误
- c++ - 如何实现可以限制内存大小的“对象缓冲区”?
- flutter - 如何在颤动的ExpansionPanels之间添加空格?
- mongoose - TypeGraphQL 字段解析器返回未定义
- php - WordPress 网站开始自动将所有页面重定向到主页 - 仅在选择“普通”永久链接时才有效?
- c# - 在四元数中旋转y?变通?
- php - 通过随机键对多维数组进行排序
- python - 返回前缀 [str(message.guild.id)] KeyError: '905126423902167041' discord.py
- python - 通过没有密码的 imaplib4 访问共享邮箱