2015-12-30 5 views
-3

1) в папке меню:я хочу chnage значение TextView в андроида меню

<item 
    android:id="@+id/action_info" 
    android:icon="@drawable/notification" 
    android:orderInCategory="2" 
    android:title="Notification" 
    app:showAsAction="always"/> 

2) feed_updated_counter в папке макета

<ImageView 
    android:id="@+id/menu_item_notificationss" 
    android:layout_width="45dp" 
    android:layout_height="fill_parent" 
    android:clickable="true" 
    android:src="@drawable/notification" /> 
<!-- Badge Count --> 

<TextView 
    android:id="@+id/actionbar_notifcation_textview" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="10dp" 
    android:layout_alignParentRight="true" 
    android:background="@drawable/shape_notification" 
    android:textColor="#ffffff" 
    android:paddingLeft="3dp" 
    android:paddingRight="3dp" 
    android:gravity="center" /> 

3) landingActivity в Java файл

@Override 

public boolean onCreateOptionsMenu(Menu menu) { 

    getMenuInflater().inflate(R.menu.menu_main, menu); 

    MenuItem item = menu.findItem(R.id.action_info); 

    MenuItemCompat.setActionView(item, R.layout.feed_update_count); 

    int newNotificationCount = DataBaseHelper.DBNotification.getNewNotificationCount(); 

    RelativeLayout notifCount = (RelativeLayout) MenuItemCompat.getActionView(item); 

    ImageView actionMenu = (ImageView)notifCount.findViewById(R.id.menu_item_notificationss);} 

выше код связан с значком значка, в feed_updated_counter Textview будет увеличивать значение, abov e работает нормально, когда приложение открыто. но если приложение открыто и уведомление прибыли, то мне нужно увеличить значение TextView в feed_update_counter файле, там Фор я создал статическую функцию и призван из обработчика гсм файла как

4) статической функции в Landing странице

public static void counterMenu(int a) 
{ 
    Thread timer = new Thread() { //new thread 
     public void run() { 
      try { 

       MenuItem item = bageMnu.findItem(R.id.action_info); 
       MenuItemCompat.setActionView(item, R.layout.feed_update_count); 
       int newNotificationCount = DataBaseHelper.DBNotification.getNewNotificationCount(); 
       RelativeLayout notifCount = (RelativeLayout) MenuItemCompat.getActionView(item); 
       ImageView actionMenu = (ImageView)notifCount.findViewById(R.id.menu_item_notificationss); 
       TextView tv = (TextView) notifCount.findViewById(R.id.actionbar_notifcation_textview); 
       tv.setVisibility(View.GONE); 
      } catch (Exception e) { 

      } 
      finally { 
      } 
     }; 
    }; 
    timer.start(); 


} 

4), а в gcm_handler я называется статической функции LandingActivity

landingActivity.counterMenu (1);

но моя проблема еще не Увеличивает значение TextView

+0

Вам нужно установить как 'tv.setText (a)'; и ваш код выглядит как «критический» –

+0

Я проверил с tv.setText («32»); но не работает – kushal

+0

Объявление Textview вне функции потока. Используйте метод [runOnUiThread] (http://stackoverflow.com/a/27992603/4596556), чтобы установить текстовое представление внутри другого потока. –

ответ

0

вы пытаетесь установить текст в новой теме, вам нужно изменить текст только в главном потоке

  • никогда не скрывают исключения, как здесь :

    } catch (Exception e) { } finally { }

вы должны войти по logger это исключение: Log.e(TAG, "Error when modify ui ", e); есть тот же ответ, который я даю U выше