2015-04-14 1 views
0

Bonjour les gars maintenant je travaille sur une application dans laquelle il y a beaucoup de citations, dans un TextView et je veux changer la taille de TextView sur le clic de bouton, comme si le petit bouton est cliqué alors le TextView devrait devenir petit, si Large est cliqué, il devrait être grand, etc. Mais chaque fois que j'appuie sur la force de l'application Button se ferme! Quel est le problème? Voilà OnClickListener pour le Button:Impossible de changer la taille de TextView en cliquant sur le bouton, pourquoi?

small = (Button) findViewById(R.id.small); 

small.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       TextView tv = (TextView)findViewById(R.id.quotes); 
       tv.setTextSize(20); 
      } 
     }); 

P.S: Le TextView et Button sont dans différents Activities.

+0

TextView et Button sont dans différentes activités? Ensuite, cela ne fonctionnera pas car findViewById est accroché à la mise en page d'une activité. – inmyth

+0

Une solution à ce problème? –

+0

S'il vous plaît inclure plus d'informations. Par exemple, il est possible de modifier ce qui se passe dans une activité par rapport à une autre en utilisant Intent.putExtra, LocalBroadcastManager et une bibliothèque EventBus. Il est également possible de définir quelque chose comme la taille de police préférée dans SharedPreferences. Tout dépend de votre situation. – PPartisan

Répondre

2

Il est impossible de modifier la taille TextView par Button à partir d'un Activity dans un autre Activity. Vous obtiendrez NullPointerException car la méthode findViewById ne trouvera pas view et renverra null. Vous devez utiliser SharedPreferences. Vous devriez enregistrer la valeur de la taille du texte lorsque vous cliquez sur Button et le lire dans la seconde Activity.

Dans votre contexte Activité:

small.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(YourActivity.this.getBaseContext()); 
      sharedPreferences.edit() 
      .putFloat("FONT_SIZE", 22) 
      .apply(); 
     } 
    }); 

Dans votre activité où vous avez TextView

 TextView tv = (TextView)findViewById(R.id.quotes); 
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(YourActivity.this.getBaseContext()); 
    tv.setTextSize(sharedPreferences.getFloat("FONT_SIZE", 13/*DEFAULT VALUE*/)); 
+0

Y a-t-il une solution pour cela? S'il vous plaît dites-moi, car à partir de 2 mois, je développe cette application ... Merci beaucoup! –

+1

Vous pouvez également définir votre valeur dans un singleton, mais votre problème ressemble à un réglage. Si vous voulez créer quelque chose comme le réglage est une bonne solution –

+0

Oui, vous avez raison, c'est l'activité Paramètres ... –