Я пытаюсь увеличить размер определенного текстового представления из приложения. Я хотел бы сделать это через выбор пункта меню, но у меня проблемы. Я пробовал следующее :
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Create an options menu for the activity
super.onCreateOptionsMenu( menu );
incrseTxtMenu = menu.add( 0,4,0,"Increase Text Size" );
incrseTxtMenu.setIcon( R.drawable.ic_menu_plus );
incrseTxtMenu.setOnMenuItemClickListener( new MenuItem.OnMenuItemClickListener()
{
@Override
public boolean onMenuItemClick(MenuItem item)
{
// handler.sendMessage( handler.obtainMessage() );
TextView tempTxt = getTextView();
tempTxt.setTextSize( 25 );
return true;
}
});
return true;
}
, но это вызывает исключение нулевого указателя. Я также пытался просто использовать intro.setTextSize(), но выдает ту же ошибку. Как я могу получить доступ к текстовому представлению из этого пункта меню?
**Обновление
//Method used to fetch the textview
public TextView getTextView()
{
return intro;
}
И ошибка из журнала cat:
AndroidRuntime FATAL EXCEPTION: main
java.lang.NullPointerException
at android.omni.Artist_activity$1.handleMessage( Artist_activity.java:32 )
Кстати, -Я пытаюсь использовать обработчик для обновления графического интерфейса -Правильно ли я предполагаю, что это необходимо, верно?
**Обновление 2 XML-КОД
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id = "@+id/tab_one_top_level"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation = "vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id = "@+id/faq_Intro"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:text = "@string/faq_Intro"
android:typeface = "monospace"
android:textStyle = "bold"
android:paddingBottom = "12dp"
/>
<TextView
android:id = "@+id/faq_Intro_Info"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:text = "@string/faq_Intro_Info"
android:textSize = "10dp"
android:typeface = "monospace"
android:textStyle = "bold"
/>
</LinearLayout>
</ScrollView>
Есть мысли?
Мое кодовое решение
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Create an options menu for the activity
super.onCreateOptionsMenu( menu );
incrseTxtMenu = menu.add( 0,1,0,"Increase Text Size" );
incrseTxtMenu.setIcon( R.drawable.ic_menu_plus );
decrseTxtMenu = menu.add( 0,2,0,"Decrease Text Size" );
decrseTxtMenu.setIcon( R.drawable.ic_menu_negate );
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
// Increase size menu item
if( item.getItemId() == 1 )
{
intro.setTextSize( myIntroSize += 5 );
introInfo.setTextSize( myIntroInfoSize += 5 );
}
// Derease size menu item
else if( item.getItemId() == 2 )
{
intro.setTextSize( myIntroSize -= 5 );
introInfo.setTextSize( myIntroInfoSize -= 5 );
}
return true;
}
Метод onCreate()просто инициализирует текстовое представление, как и раньше. Да, и значения myIntroSize и myIntroInfoSize могут быть какими угодно.