Nano Hash - криптовалюты, майнинг, программирование

Поле редактирования текста Не обнаружено. Выдает исключение нулевого указателя

Я пробовал несколько вещей, но мое приложение продолжает падать.

Я попытался отладить, он возвращает эту ошибку при запуске приложения.

java.lang.NullPointerException: попытка вызвать виртуальный метод android.text.Editable android.widget.EditText.getText() для нулевой ссылки на объект

package com.zybooks.pigdice;


import androidx.appcompat.app.AppCompatActivity;

import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    final Context context = this;
    //private EditText playerName;
    private String name;
    private int target_score_display;
    //public TextView player_name;
    private  EditText targetScore;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //player_name = findViewById(R.id.player_name);
        targetScore = dialog.findViewById(R.id.enter_target_score);
        //playerName = findViewById(R.id.enter_player_name);



        Button start_game = findViewById(R.id.start_game);
        start_game.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // custom dialog
                final Dialog dialog = new Dialog(context);
                dialog.setContentView(R.layout.dialogbox);
                dialog.setTitle("Title...");
                Button dialogButton = dialog.findViewById(R.id.start_game_dialog);
                // if button is clicked, close the custom dialog
                dialogButton.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                        try{
                            String value = targetScore.getText().toString();
                            target_score_display = Integer.parseInt(targetScore.getText().toString());
                            Intent intent = new Intent(getApplicationContext(),Gameplay.class);
                            intent.putExtra("TARGET_SCORE",target_score_display);
                            Bundle bundle = new Bundle();
                            bundle.putString("TARGET_SCORE",value);
                            intent.putExtras(bundle);
                            startActivity(intent);
                        } catch(NumberFormatException nfe) {
                            System.out.println("Could not parse " + nfe);
                        }
                    }
                });
                dialog.show();
            }
        });
    }
}

Попытка передать ввод, сделанный в диалоговом окне, в следующее действие. Боролся с этим более 3 часов.


  • Используйте targetScore = findViewById(R.id.enter_target_score); вместо: targetScore = dialog.findViewById(R.id.enter_target_score); 24.09.2019
  • targetScore = dialog.findViewById(R.id.enter_target_score); просто найтиViewById 24.09.2019
  • То, что вы показали, не должно компилироваться (диалоговое окно используется в неправильной области). Но вам нужно смотреть на полную трассировку стека, а не только на сообщение об исключении. 24.09.2019

Ответы:


1

Вы можете вызывать dialog.findViewById только после создания диалога (внутри onClick). У него нет содержимого при создании действия, поэтому вы не можете найти его представления. Например, dialogButton получен правильно

Поэтому, когда вы пытаетесь получить текст из несуществующего представления, он выдает исключение

24.09.2019
  • Спасибо чувак! Понятно! 24.09.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..