Есть код для добавления позиции в массив:
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
TextView cntContent = findViewById(R.id.cntContent);
switch (id) {
case R.id.favoriteNone:
Intent giveIntent = getIntent();
contentUrl = giveIntent.getStringExtra("URL_KEY");
contentTitle = giveIntent.getStringExtra("TITLE_KEY");
contentDate = giveIntent.getStringExtra("DATE_KEY");
contentCategory = giveIntent.getStringExtra("CATEGORY_KEY");
for(NewsClass urls : Favorites.favoritNews) {
if (urls.getmUrl().contains(contentUrl)) {
item.setIcon(R.drawable.ic_action_favdark);
Toast.makeText(this, "Уже есть в избранном", Toast.LENGTH_SHORT).show();
return false;
}
}
Favorites.favoritNews.add(new NewsClass(
contentTitle,
contentDate,
contentUrl,
contentCategory
));
TinyDB tinyDB = new TinyDB(this);
tinyDB.clear();
Gson gsonCreate = new Gson();
ArrayList<String> gsonString = new ArrayList<>();
for(int i = 0; i < Favorites.favoritNews.size(); i++)
gsonString.add(gsonCreate.toJson(Favorites.favoritNews.get(i)));
tinyDB.putListString("tinyFavoritNews",gsonString);
Toast.makeText(this, "Добавлено в избранное", Toast.LENGTH_SHORT).show();
item.setIcon(R.drawable.ic_action_favdark);
Intent favorites = new Intent(NewsContent.this, Favorites.class);
startActivity(favorites);
break;
}
return true;
}
В данном случае код item.setIcon(R.drawable.ic_action_favdark);
работает как нужно, иконка меняется. Но когда я делаю проверку массива на совпадение и в случае оного пытаюсь сменить иконку, приложение крашится:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_news_content);
Intent giveIntent = getIntent();
contentUrl = giveIntent.getStringExtra("URL_KEY");
contentTitle = giveIntent.getStringExtra("TITLE_KEY");
contentDate = giveIntent.getStringExtra("DATE_KEY");
contentCategory = giveIntent.getStringExtra("CATEGORY_KEY");
setContentView(R.layout.activity_news_content);
MenuItem fav = findViewById(R.id.favoriteNone);
for(NewsClass urls : Favorites.favoritNews) {
if (urls.getmUrl().contains(contentUrl)) {
fav.setIcon(R.drawable.ic_action_favdark);
Toast.makeText(this, "Уже есть в избранном", Toast.LENGTH_SHORT).show();
}
}
И крашится именно на строке fav.setIcon(R.drawable.ic_action_favdark);
, ссылаясь на
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setBackgroundResource(int)' on a null object reference
Как мне сменить иконку после проверки массива на совпадение?
Можно иначе:
private MenuItem itemMenu;
@Override
protected void onCreate...
...
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
// Получаете ссылку на пункт меню
itemMenu = menu.findItem(R.id.item_menu);
return true;
}
И в нужном месте:
itemMenu.setIcon(R.drawable.ic_picture);
Разобрался. Инициализируем меню
private Menu menu;
Меняем onCreateOptionsMenu:
public boolean onCreateOptionsMenu(Menu menu) {
this.menu = menu;
getMenuInflater().inflate(R.menu.menu_social, menu);
return true;
}
И пишем в onPostExecute:
protected void onPostExecute(String result) {
MenuItem fav = menu.findItem(R.id.favoriteNone);
for(NewsClass urls : Favorites.favoritNews) {
if (urls.getmUrl().contains(contentUrl)) {
fav.setIcon(getResources().getDrawable(R.drawable.ic_action_favdark));
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
подскажите пожалуйста, может кто знаетМожно ли как-то в java получить корневой путь Томката?
Всем привет! Возникла такая проблема - при работе с некоторымиtiff при попытке получить DataRaster[] с использованием метода readDataRaster() (класс GeotiffReader...