Что “Ссылка на объект не устанавливает на экземпляр объекта”, среднего? [дубликат]

Если вы поймали выбранный объект справа, вы должны преобразовать его в TextView, а затем получить текст TextView следующим образом:

String vo = ((TextView)adapterView.getAdapter().getItem(position)).getText().toString();
Log.d(TAG, vo);

ИЛИ

Перейти класс вашего адаптера и создайте интерфейс для получения значений элемента, на который нажали.

182
задан John Saunders 4 April 2014 в 06:25
поделиться

6 ответов

Переменные в. NET - это либо ссылочные типы, либо типы значений. Типы значений - это примитивы, такие как целые числа и логические значения или структуры (и их можно идентифицировать, поскольку они наследуются от System.ValueType ). Булевы переменные, когда они объявлены, имеют значение по умолчанию:

bool mybool;
//mybool == false

Типы ссылок, когда они объявлены, не имеют значения по умолчанию:

class ExampleClass
{
}

ExampleClass exampleClass; //== null

Если вы попытаетесь получить доступ к члену экземпляра класса, используя нулевую ссылку, вы получите System.NullReferenceException . Это то же самое, что Ссылка на объект не установлена ​​для экземпляра объекта .

Следующий код является простым способом воспроизведения этого:

static void Main(string[] args)
{
    var exampleClass = new ExampleClass();
    var returnedClass = exampleClass.ExampleMethod();
    returnedClass.AnotherExampleMethod(); //NullReferenceException here.
}

class ExampleClass
{
    public ReturnedClass ExampleMethod()
    {
        return null;
    }
}

class ReturnedClass
{
    public void AnotherExampleMethod()
    {
    }
}

Это очень распространенная ошибка, которая может возникать из-за все виды причин. Коренная причина действительно зависит от конкретного сценария, с которым вы столкнулись.

Если вы используете API или вызываете методы, которые могут возвращать ноль, важно выполнить это изящно . Основной метод, описанный выше, может быть изменен таким образом, что исключение NullReferenceException никогда не должно быть увидено пользователем:

static void Main(string[] args)
{
    var exampleClass = new ExampleClass();
    var returnedClass = exampleClass.ExampleMethod();

    if (returnedClass == null)
    {
        //throw a meaningful exception or give some useful feedback to the user!
        return;
    }

    returnedClass.AnotherExampleMethod();
}

Все вышеперечисленное на самом деле просто подсказки .NET Type Fundamentals, для дальнейшей информации я бы порекомендовал либо подобрать CLR через C # или читая эту статью MSDN того же автора - Джеффри Рихтера. Также обратите внимание на гораздо более сложный пример , когда вы можете встретить исключение NullReferenceException.

Некоторые команды, использующие Resharper, используют атрибуты JetBrains для аннотирования кода, чтобы выделить места, где находятся нули ( нет) ожидается.

Основной метод, описанный выше, может быть изменен таким образом, что исключение NullReferenceException никогда не должно быть увидено пользователем:

static void Main(string[] args)
{
    var exampleClass = new ExampleClass();
    var returnedClass = exampleClass.ExampleMethod();

    if (returnedClass == null)
    {
        //throw a meaningful exception or give some useful feedback to the user!
        return;
    }

    returnedClass.AnotherExampleMethod();
}

Все вышеперечисленное на самом деле просто подсказки .NET Type Fundamentals, для дальнейшей информации я бы порекомендовал либо подобрать CLR через C # или читая эту статью MSDN того же автора - Джеффри Рихтера. Также обратите внимание на гораздо более сложный пример , когда вы можете встретить исключение NullReferenceException.

Некоторые команды, использующие Resharper, используют атрибуты JetBrains для аннотирования кода, чтобы выделить места, где находятся нули ( нет) ожидается.

Основной метод, описанный выше, может быть изменен таким образом, что исключение NullReferenceException никогда не должно быть увидено пользователем:

static void Main(string[] args)
{
    var exampleClass = new ExampleClass();
    var returnedClass = exampleClass.ExampleMethod();

    if (returnedClass == null)
    {
        //throw a meaningful exception or give some useful feedback to the user!
        return;
    }

    returnedClass.AnotherExampleMethod();
}

Все вышеперечисленное на самом деле просто подсказки .NET Type Fundamentals, для дальнейшей информации я бы порекомендовал либо подобрать CLR через C # или читая эту статью MSDN того же автора - Джеффри Рихтера. Также обратите внимание на гораздо более сложный пример , когда вы можете встретить исключение NullReferenceException.

Некоторые команды, использующие Resharper, используют атрибуты JetBrains для аннотирования кода, чтобы выделить места, где находятся нули ( нет) ожидается.

рекомендую либо получить CLR через C # , либо прочитать эту статью MSDN того же автора - Джеффри Рихтера. Также обратите внимание на гораздо более сложный пример , когда вы можете встретить исключение NullReferenceException.

Некоторые команды, использующие Resharper, используют атрибуты JetBrains для аннотирования кода, чтобы выделить места, где находятся нули ( нет) ожидается.

рекомендую либо получить CLR через C # , либо прочитать эту статью MSDN того же автора - Джеффри Рихтера. Также обратите внимание на гораздо более сложный пример , когда вы можете встретить исключение NullReferenceException.

Некоторые команды, использующие Resharper, используют атрибуты JetBrains для аннотирования кода, чтобы выделить места, где находятся нули ( нет) ожидается.

160
ответ дан 23 November 2019 в 06:07
поделиться

Another easy way to get this:

 Person myPet = GetPersonFromDatabase();
 // check for myPet == null... AND for myPet.PetType == null
 if ( myPet.PetType == "cat" ) <--- fall down go boom!
20
ответ дан 23 November 2019 в 06:07
поделиться

Не делать быть тупым, но это означает именно то, что он говорит. Одна из ваших ссылок на объект - NULL. Вы увидите это, когда попытаетесь получить доступ к свойству или методу объекта NULL.

10
ответ дан 23 November 2019 в 06:07
поделиться

Это означает, что вы сделали что-то подобное.

Class myObject = GetObjectFromFunction();

И без не сделали

, если (myObject! = Null) , вы продолжаете делать ] myObject.Method ();

4
ответ дан 23 November 2019 в 06:07
поделиться

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

ради самообучения, вы можете поставить некоторые условия проверки. как

if (myObj== null)
Console.Write("myObj is NULL");
1
ответ дан 23 November 2019 в 06:07
поделиться

Что означает эта ошибка? Ссылка на объект не установлена ​​на экземпляр объекта.

В точности то, что он говорит, вы пытаетесь использовать нулевой объект, как если бы он был правильно ссылка на объект.

1
ответ дан 23 November 2019 в 06:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: