Autore Topic: Cambiare un stringa nell'action bar  (Letto 297 volte)

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 319
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Cambiare un stringa nell'action bar
« il: 10 Settembre 2015, 14:46:49 CEST »
0
Salve a tutti!

La mia app ha un'action bar con un stringa il cui valore è preso da strings.xml.
Io vorrei cambiare il valore di tale stringa da programma, ma ho già visto che ciò non è possibile perché non si può accedere a strings da codice per cambiarla dinamicamente.

Questo è l'xml della action bar:
Codice (XML): [Seleziona]
<menu xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:id="@+id/Username" android:title="@string/ProfileName"
       android:orderInCategory="50" app:showAsAction="always" />
</menu>

e questo è strings:
Codice (XML): [Seleziona]
<resources>
    <string name="app_name">test</string>

    <string name="title_section1">My Profile</string>
    <string name="title_section2">Classifiche</string>
    <string name="title_section3">Premi</string>
    <string name="title_section4">FAQ\'S</string>
    <string name="title_section5">Home</string>

    <string name="navigation_drawer_open">Open navigation drawer</string>
    <string name="navigation_drawer_close">Close navigation drawer</string>

    <string name="action_example">Example action</string>

    <string name="action_settings">Settings</string>

    <string name="ProfileName">Guest</string>

</resources>

Che soluzione suggerite per poter cambiare tale valore?

Offline CrotaNexus

  • Utente normale
  • ***
  • Post: 156
  • Vuolsi così colà dove si puote ciò che si vuole
  • Respect: +25
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    SimoneDev
  • Sistema operativo:
    Windows 8.1
Re:Cambiare un stringa nell'action bar
« Risposta #1 il: 10 Settembre 2015, 20:35:09 CEST »
0
Da codice Java referenziando l'item con id "Username" puoi fare, nell'onCreateOptionsMenu:

Codice (Java): [Seleziona]
MenuItem menuItem = menu.findItem(R.id.username);
menuItem.setTitle(getString(R.string.tua_stringa);

Oppure, se vuoi qualcosa di dinamico, nell'onOptionsItemSelected:

Codice (Java): [Seleziona]
switch(item.getItemId()) {
     case R.id.username:
     if(tua_condizione) {
          item.setTitle(getString(R.string.tua_stringa));
     } else {
         item.setTitle(getString(R.string.tua_stringa_2));
     }
     break;
}

Non capisco la tua necessità del voler agire direttamente sulla risorsa XML.
SimoneDev @ Google Play Store

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 319
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Re:Cambiare un stringa nell'action bar
« Risposta #2 il: 11 Settembre 2015, 12:38:22 CEST »
0
Il setTitle lo uso già per cambiare il nome delle varie sezioni in cui naviga la mia app (usa una lista di tipo NavigationDrawer in combo con dei fragment) quindi non posso usarlo per inserirci un nome utente

Ho bisogno di modificare quella risorsa perché vorrei mandare a video le differenze tra un utente "Guest" ed un utente registrato, tipo il guest avrà la scritta guest nell'action bar mentre l'utente registrato avrà il suo username.

Graize mille comunque per l'aiuto!