Android, res.getDrawable устарел, как я могу его изменить? [Дубликат]

Как объяснил scompt.com , запрос может завершиться ошибкой. Используйте этот код, чтобы получить ошибку запроса или правильный результат:

$username = $_POST['username'];
$password = $_POST['password'];

$result = mysql_query("
SELECT * FROM Users 
WHERE UserName LIKE '".mysql_real_escape_string($username)."'
");

if($result)
{
    while($row = mysql_fetch_array($result))
    {
        echo $row['FirstName'];
    }
} else {
    echo 'Invalid query: ' . mysql_error() . "\n";
    echo 'Whole query: ' . $query; 
}

Для получения дополнительной информации см. Документацию для mysql_query() .

Фактической ошибкой были одиночные кавычки, так что переменная $username не анализировалась. Но вы действительно должны использовать mysql_real_escape_string($username), чтобы избежать инъекций SQL.

570
задан MiguelHincapieC 22 December 2015 в 18:35
поделиться

7 ответов

Изменить: см. мое сообщение в блоге по этому вопросу для более полного объяснения


Вместо этого вы должны использовать следующий код из библиотеки поддержки:

ContextCompat.getDrawable(context, R.drawable.***)

Использование этого метода эквивалентно вызову:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    return resources.getDrawable(id, context.getTheme());
} else {
    return resources.getDrawable(id);
}

Начиная с API 21 вы должны использовать метод getDrawable(int, Theme) вместо getDrawable(int), так как он позволяет вам получить объект, связанный с определенным идентификатором ресурса для данной плотности экрана / темы. Вызов устаревшего метода getDrawable(int) эквивалентен вызову getDrawable(int, null).

713
ответ дан Alex Lockwood 27 August 2018 в 06:38
поделиться

Build.VERSION_CODES.LOLLIPOP теперь должен быть изменен на BuildVersionCodes.Lollipop i.e:

if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop) {
    this.Control.Background = this.Resources.GetDrawable(Resource.Drawable.AddBorder, Context.Theme);
} else {
    this.Control.Background = this.Resources.GetDrawable(Resource.Drawable.AddBorder);
}
0
ответ дан ColdFire 27 August 2018 в 06:38
поделиться

Вы можете использовать

ContextCompat.getDrawable(getApplicationContext(),R.drawable.example);

, который работает для меня

2
ответ дан Dasser Basyouni 27 August 2018 в 06:38
поделиться

Попробуйте следующее:

public static List<ProductActivity> getCatalog(Resources res){
    if(catalog == null) {
        catalog.add(new Product("Dead or Alive", res
                .getDrawable(R.drawable.product_salmon),
                "Dead or Alive by Tom Clancy with Grant Blackwood", 29.99));
        catalog.add(new Product("Switch", res
                .getDrawable(R.drawable.switchbook),
                "Switch by Chip Heath and Dan Heath", 24.99));
        catalog.add(new Product("Watchmen", res
                .getDrawable(R.drawable.watchmen),
                "Watchmen by Alan Moore and Dave Gibbons", 14.99));
    }
}
1
ответ дан Donald Duck 27 August 2018 в 06:38
поделиться

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

 mItems = new ArrayList<ListViewItem>();
//    Resources resources = getResources();

//    mItems.add(new ListViewItem(resources.getDrawable(R.drawable.az_lgo), getString(R.string.st_az), getString(R.string.all_nums)));
//    mItems.add(new ListViewItem(resources.getDrawable(R.drawable.ca_lgo), getString(R.string.st_ca), getString(R.string.all_nums)));
//    mItems.add(new ListViewItem(resources.getDrawable(R.drawable.co_lgo), getString(R.string.st_co), getString(R.string.all_nums)));
    mItems.add(new ListViewItem(ResourcesCompat.getDrawable(getResources(), R.drawable.az_lgo, null), getString(R.string.st_az), getString(R.string.all_nums)));
    mItems.add(new ListViewItem(ResourcesCompat.getDrawable(getResources(), R.drawable.ca_lgo, null), getString(R.string.st_ca), getString(R.string.all_nums)));
    mItems.add(new ListViewItem(ResourcesCompat.getDrawable(getResources(), R.drawable.co_lgo, null), getString(R.string.st_co), getString(R.string.all_nums)));
1
ответ дан Jay 27 August 2018 в 06:38
поделиться

getResources().getDrawable() устарел на уровне API 22. Теперь мы должны добавить тему:

getDrawable (int id, Resources.Theme theme) (Добавлено в уровень API 21)

Это пример:

myImgView.setImageDrawable(getResources().getDrawable(R.drawable.myimage, getApplicationContext().getTheme()));

Это пример проверки для более поздних версий:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { //>= API 21
     myImgView.setImageDrawable(getResources().getDrawable(R.drawable.myimage, getApplicationContext().getTheme()));
   } else { 
     myImgView.setImageDrawable(getResources().getDrawable(R.drawable.myimage));
}
25
ответ дан Jorgesys 27 August 2018 в 06:38
поделиться

Заменить эту строку: getResources().getDrawable(R.drawable.your_drawable)

с ResourcesCompat.getDrawable(getResources(), R.drawable.your_drawable, null)

EDIT

ResourcesCompat также устарела. Но вы можете использовать это:

ContextCompat.getDrawable(this, R.drawable.your_drawable) (Здесь this - это контекст)

для получения более подробной информации по этой ссылке: ContextCompat

137
ответ дан Nagaraju Gajula 27 August 2018 в 06:38
поделиться
Другие вопросы по тегам:

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