В соответствии с руководством Navigation Drawer guide DrawerLayout
должен быть корнем вашего макета. Он должен содержать только 2 детей - один, который содержит ваше «основное содержимое» - кнопки, текстовые поля и т. Д. И другое должно быть содержимым самого ящика. Что-то вроде этого:
Кроме того: порядок двух детей важен из-за Z-порядка DrawerLayout (который является ViewGroup). Представление списка должно быть объявлено после вашего основного содержимого, чтобы оно было упорядочено (и отображено) перед ним.
Свойства действуют как аксессоры для переменных. То, что происходит в вашем случае, - это, в основном, бесконечный цикл - всякий раз, когда кто-то пытается получить ценность вашего имущества, он продолжает возвращать свойство. Вместо этого вы хотите создать резервное поле _dbData:
private string _dbData;
public string DBData
{
get
{
return _dbData;
}
private set
{
_dbData = value;
}
}
Теперь ваше свойство управляет доступом к этому полю.
Вы должны использовать поле поддержки для свойства:
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);
}
Ваш аксессор может быть действительно упрощен.
Выполнение:
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;
}