Попытался сделать комбинацию элементов textview, чтобы показать/скрыть спойлеры в тексте. Проблема в том, что приложение запускается после запуска, если я добавляю код, чтобы изначально скрыть представление с текстом. Пробовал как setHeight, так и LayoutProperties, заставляя приложение терпеть крах или каким-то образом переопределять событие OnClickListener и блокировать попытки изменить размер TextView.Изменение свойств свойств сбой деятельности
Вот код.
String sample;
boolean SpoilerOpen;
int TextHeight;
TextView Sample;
String spoilertext;
TextView SpoilerContainer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout scroll = new LinearLayout (this);
scroll.setOrientation(1);
spoilertext="hidden txt";
final String Spoiler_close="show";
final String Spoiler_open="hide";
SpoilerContainer=new TextView (this);
SpoilerContainer.setText(Spoiler_close);
SpoilerContainer.setClickable(true);
SpoilerOpen=false;
Sample=new TextView(this);
Sample.setText(spoilertext);
// --part causing problems--
ViewGroup.LayoutParams params = Sample.getLayoutParams();
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
Sample.setLayoutParams(params);
// --end of part--
SpoilerContainer.setOnClickListener(new View.OnClickListener() {
public void onClick (View V)
{
if (SpoilerOpen==false)
{
SpoilerOpen=true;
SpoilerContainer.setText(Spoiler_open);
ViewGroup.LayoutParams params = Sample.getLayoutParams();
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
Sample.setLayoutParams(params);
}
else
{
SpoilerOpen=false;
SpoilerContainer.setText(Spoiler_close);
ViewGroup.LayoutParams params = Sample.getLayoutParams();
params.height = 0;
Sample.setLayoutParams(params);
}
}
});
scroll.addView(SpoilerContainer);
scroll.addView(Sample);
setContentView(scroll);
}
Найдено один подобные вопросы решаются here, но в моем случае родитель TextView является LinearLayout и использования его LayoutParams не помогло или я его неправильно. Надеюсь, я нашел достаточно информации, чтобы найти решение.
Вот журналы из Eclipse.
09-09 15:44:27.288: D/AndroidRuntime(568): Shutting down VM
09-09 15:44:27.307: W/dalvikvm(568): threadid=1: thread exiting with uncaught exception (group=0x409961f8)
09-09 15:44:27.347: E/AndroidRuntime(568): FATAL EXCEPTION: main
09-09 15:44:27.347: E/AndroidRuntime(568): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.project/com.project.MainActivity}: java.lang.NullPointerException
09-09 15:44:27.347: E/AndroidRuntime(568): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
09-09 15:44:27.347: E/AndroidRuntime(568): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
09-09 15:44:27.347: E/AndroidRuntime(568): at android.app.ActivityThread.access$600(ActivityThread.java:122)
09-09 15:44:27.347: E/AndroidRuntime(568): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
09-09 15:44:27.347: E/AndroidRuntime(568): at android.os.Handler.dispatchMessage(Handler.java:99)
09-09 15:44:27.347: E/AndroidRuntime(568): at android.os.Looper.loop(Looper.java:137)
09-09 15:44:27.347: E/AndroidRuntime(568): at android.app.ActivityThread.main(ActivityThread.java:4340)
09-09 15:44:27.347: E/AndroidRuntime(568): at java.lang.reflect.Method.invokeNative(Native Method)
09-09 15:44:27.347: E/AndroidRuntime(568): at java.lang.reflect.Method.invoke(Method.java:511)
09-09 15:44:27.347: E/AndroidRuntime(568): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
09-09 15:44:27.347: E/AndroidRuntime(568): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
09-09 15:44:27.347: E/AndroidRuntime(568): at dalvik.system.NativeStart.main(Native Method)
09-09 15:44:27.347: E/AndroidRuntime(568): Caused by: java.lang.NullPointerException
09-09 15:44:27.347: E/AndroidRuntime(568): at com.project.MainActivity.onCreate(MainActivity.java:42)
09-09 15:44:27.347: E/AndroidRuntime(568): at android.app.Activity.performCreate(Activity.java:4465)
09-09 15:44:27.347: E/AndroidRuntime(568): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
09-09 15:44:27.347: E/AndroidRuntime(568): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
09-09 15:44:27.347: E/AndroidRuntime(568): ... 11 more
09-09 15:46:02.108: I/Process(568): Sending signal. PID: 568 SIG: 9
вы можете поделиться своей LogCat также – Metehan
Добавленных журналов, надеюсь, что это помогает. –
проверить мой новый отредактированный ответ – Metehan