собственность частный набор падает единство

В соответствии с руководством Navigation Drawer guide DrawerLayout должен быть корнем вашего макета. Он должен содержать только 2 детей - один, который содержит ваше «основное содержимое» - кнопки, текстовые поля и т. Д. И другое должно быть содержимым самого ящика. Что-то вроде этого:



    
        

Кроме того: порядок двух детей важен из-за Z-порядка DrawerLayout (который является ViewGroup). Представление списка должно быть объявлено после вашего основного содержимого, чтобы оно было упорядочено (и отображено) перед ним.

1
задан Keyur Ramoliya 13 July 2018 в 08:37
поделиться

3 ответа

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

private string _dbData;
public string DBData 
{ 
    get
    {
        return _dbData;
    } 
    private set
    {
        _dbData = value;
    } 
}

Теперь ваше свойство управляет доступом к этому полю.

2
ответ дан Kwinten 17 August 2018 в 13:20
поделиться

Вы должны использовать поле поддержки для свойства:

string _dbData;

public string DBData
{
    get
    {
        if(_dbData == null)
            return null;
        else
            return _dbData;
    }
    private set
    {
        _dbData= value;
    }
}

Свойство - это просто синтаксический сахар для методов getter и setter. Поэтому вы можете переписать свое свойство как:

public string GetDBData()
{
    if(_dbData == null)
        return null;
    else
        return _dbData;
}

public void SetDBData(string value)
{
    _dbData = value;
}

Способ реализации свойства:

public void SetDBData(string value)
{
    // you will never get out of here
    SetDBData(value);
}
4
ответ дан Alessandro D'Andria 17 August 2018 в 13:20
поделиться
  • 1
    Я предлагаю вам добавить к вашему ответу некоторое объяснение о том, почему его код не работает, например, как он это сделал, предоставил бесконечную рекурсию, а затем stackoverflow – Cid 13 July 2018 в 08:45

Ваш аксессор может быть действительно упрощен.

Выполнение:

get
{
    if(DBData == null)
        return null;
    else
        return DBData;
} 

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

get
{
    return DBData; //if DBData is null, it will return null
}

Итак, вы можете написать свой аксессуар таким образом:

public string DBData 
{ 
    get;
    private set;
}
1
ответ дан Cid 17 August 2018 в 13:20
поделиться
Другие вопросы по тегам:

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