首页 > 解决方案 > 通过意图发送字符串时出现空指针错误

问题描述

我想将一些字符串发送到另一个应用程序,但是当我单击 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)

标签: javaandroid

解决方案


当您设置 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所做的那样。


推荐阅读