2015-04-14 3 views
0

Привет, ребята, сейчас я работаю над приложением, в котором есть много цитат, в TextView, и я хочу изменить размер TextView при нажатии кнопки, например, если нажата кнопка Small, тогда TextView должен стать маленьким, если Большой щелкнул, он должен быть большим и т. Д. Но каждый раз, когда я нажимаю, приложение app Button закрывается! В чем проблема? Вот OnClickListener для Button:Невозможно изменить размер TextView при нажатии кнопки, почему?

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: TextViewButton и находятся в разных Activities.

+0

TextView и кнопки в различных видах деятельности? Тогда это не сработает, потому что findViewById подключен к макету одного действия. – inmyth

+0

Любое решение этой проблемы? –

+0

Пожалуйста, укажите дополнительную информацию. Например, можно изменить то, что происходит в одном действии от другого, используя Intent.putExtra, LocalBroadcastManager и библиотеку EventBus. Также возможно установить что-то вроде предпочтительного размера шрифта в SharedPreferences. Все зависит от вашей ситуации. – PPartisan

ответ

2

Невозможно изменить размер TextView на Button с одного Activity в другом Activity. Вы получите NullPointerException, потому что метод findViewById не найдет представление и вернет null. Вы должны использовать SharedPreferences. Вы должны сохранить значение размера текста, когда нажимаете Button и читаете его во втором Activity.

В вашей установки активность:

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

В вашей деятельности, где у вас есть 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

Есть ли решение для этого? Пожалуйста, скажите мне, потому что с 2 месяцев я разрабатываю это приложение ... Большое вам спасибо! –

+1

Вы также можете установить свое значение в одном синглете, но ваша проблема звучит как некоторые настройки. Если вы хотите создать что-то вроде настройки, это правильное решение. –

+0

Да, вы правы, это настройка Activity ... –

Смежные вопросы