Выдает исключение NullPointerException при использовании getStringExtra в MainActivity - PullRequest
0 голосов
/ 11 июля 2019

В настоящее время я изучаю явные намерения, и я следовал инструкциям кодирования, и он всегда возвращает исключение NullPointerException.

Это код, в который я ввожу данные для возврата в MainActivity:

if (etSurname.getText().toString().isEmpty())
            {
                Toast.makeText(Activity3.this, "Fill In A Surname!", Toast.LENGTH_SHORT).show();
            }
            else
            {
                String surname=etSurname.getText().toString().trim();
                Intent intent=new Intent();
                intent.putExtra("surname",surname);
                setResult(RESULT_OK,intent);
                Activity3.this.finish();
            }
        }
    });
    btnCancel.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            setResult(RESULT_CANCELED);
            Activity3.this.finish();
        }
    });

и это код, который я поместил в MainActivity, который в основном является страницей запуска, где данные, которые я заполнил в Activity3, должны появиться в текстовом представлении:

btnAct3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Intent intent= new Intent(MainActivity.this, com.example.explicitintents.Activity3.class);
            startActivityForResult(intent, ACTIVITY3);

        }
    });
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if(requestCode==ACTIVITY3)
    {
        if(resultCode==RESULT_OK)
        {
            tvResults.setText(data.getStringExtra("surname"));
        }

        if(resultCode==RESULT_CANCELED)
        {
            tvResults.setText("no data received!");
        }
    }
}

Я попытался использовать функцию отладки, и она указывает на эту строку:

tvResults.setText(data.getStringExtra("surname")); 

Я ожидаю, что фамилия, которую я заполнил в EditText в Activity3, появится в MainActivity, когда я нажму кнопку «Отправить».

Вместо этого он закрывает приложение, и вот что появляется в logcat:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
    at com.example.explicitintents.MainActivity.onActivityResult(MainActivity.java:69)

1 Ответ

0 голосов
/ 11 июля 2019

Попытка вызвать виртуальный метод 'void android.widget.TextView.setText (java.lang.CharSequence)' для нулевой ссылки на объект

Выше ошибка означает, что вы пытаетесь использовать .setText () метод для пустой ссылки TextView.

Итак, ваша проблема в том, что вы забыли связать свои tvResults с дизайном xml.В вашем методе onCreate () просто добавьте приведенный ниже код.

TextView tvResults = findViewById(R.id.your_textview_name);  //bind with your tv name in xml
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...