java - 通过意图发送字符串时出现空指针错误
问题描述
我想将一些字符串发送到另一个应用程序,但是当我单击 buttonSave 时出现错误是空指针。
我设置了Toast,结果还是报错。还有其他方法可以获取价值EditText
吗?
代码 :
@Nullable
@Override
public View onCreateView(....) {
View view = ....;
jadwalShubuh = view.findViewById(R.id.shubuhEditText);
buttonSave = view.findViewById(R.id.saveButton);
buttonSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Error : Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference
String getShubuh = jadwalShubuh.getText().toString().trim();
Intent moveString = new Intent("com.package.my.application");
moveString.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
moveString.putExtra("getShubuh", getShubuh);
startActivity(moveString);
}
});
actionLoad();
}
private void actionLoad() {
// Call method findLocation when location != null
findCityCountryName(location);
}
private void findCityCountryName(Location location) {
// Another String to setCityName and setCountryName
callingAPI(cityName, countryName);
}
private void callingAPI(String cityName, String countryName) {
// Calling API code
call.enqueue(new Callback<JsonObject>() {
@Override
public void onResponse(Call<JsonObject> call, Response<JsonObject> response) {
if (dateJSON.getString("readable").contentEquals(getMonthReadable)) {
String setShubuh = timingsJSON.getString("Fajr");
jadwalShubuh.setText(setShubuh);
}
});
}
日志猫:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference
at com.package.my.application.pengaturanWaktu.sendData(pengaturanWaktu.java:250)
at com.package.my.application.pengaturanWaktu.access$000(pengaturanWaktu.java:52)
at com.package.my.application.pengaturanWaktu$1.onClick(pengaturanWaktu.java:94)
解决方案
当您设置 Extra 时,该值尚未设置,因为您在初始化之后进行 API 调用。
一个快速的解决方法是在从 API 获取值后设置 getShubuh String 分配:
if (dateJSON.getString("readable").contentEquals(getMonthReadable)) {
String setShubuh = timingsJSON.getString("Fajr");
jadwalShubuh.setText(setShubuh);
getShubuh = setShubuh.trim();
}
并声明getShubuh String 可以被这两种方法访问,就像你对jadwalShubuh所做的那样。
推荐阅读
- regex - 以任何顺序匹配逗号分隔项目列表的正则表达式
- spring - 使用spring从属性文件中设置int值
- r - 如何在 R 中保存和加载样条插值函数?
- javascript - 在 Typescript 中使用 If-instanceof-statements 是不是很糟糕?
- yii2 - 为 API 应用程序操作控制器映射
- angular - 检测底部滚动
- javascript - Safari 在页面顶部检测到用户正在向下滚动
- r - R:Ubuntu 上 R 与 Rscript 的内存分配
- sql - 我如何在 PostgreSQL 中分组和计数以防止结果中出现空单元格
- entity-framework - 实体框架新对象与 DbSet.Create