Программа вылетает после второго нажатия кнопки "btnAdd", не могу понять в чем проблема
public class MainActivity extends AppCompatActivity {
LinearLayout view;
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
ArrayList<TextView> textViews;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textViews = new ArrayList<TextView>(10);
// создаем view из dialog.xml
view = (LinearLayout) getLayoutInflater()
.inflate(R.layout.dialog, null);
}
public void onclick(View v) {
AlertDialog.Builder adb = new AlertDialog.Builder(this);
adb.setTitle("Custom dialog");
// устанавливаем ее, как содержимое тела диалога
adb.setView(view);
// находим TexView для отображения кол-ва созданных TextView и времени
TextView tvCount = (TextView) view.findViewById(R.id.tvCount);
TextView tvTime = (TextView) view.findViewById(R.id.tvTime);
tvTime.setText(sdf.format(new Date(System.currentTimeMillis())));
switch (v.getId()){
case R.id.btnAdd:
TextView tv = new TextView(this);
view.addView(tv,new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT));
tv.setText("TextView " + (textViews.size()+1));
textViews.add(tv);
break;
case R.id.btnRemove:
if (textViews.size() > 0){
TextView tv1 = textViews.get(textViews.size()-1);
view.removeView(tv1);
textViews.remove(tv1);
}
break;
}
tvCount.setText("Кол-во TextView = " + textViews.size());
adb.show();
}}
Решил проблему удалением родительской разметки элемента. Только я не совсем понял, на каком участке кода эта родительская разметка присваивается элементу и почему программа выдает ошибку, если разметку не убрать.
public void onclick(View v) {
AlertDialog.Builder adb = new AlertDialog.Builder(this);
adb.setTitle("Custom dialog");
TextView tvCount = (TextView) view.findViewById(R.id.tvCount);
TextView tvTime = (TextView) view.findViewById(R.id.tvTime);
switch (v.getId()){
case R.id.btnAdd:
TextView tv = new TextView(this);
view.addView(tv, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
tv.setText("TextView " + (textViews.size()+1));
textViews.add(tv);
break;
case R.id.btnRemove:
if (textViews.size() > 0){
TextView tv1 = textViews.get(textViews.size()-1);
view.removeView(tv1);
textViews.remove(tv1);
}
break;
}
if(view.getParent()!=null)
((ViewGroup)view.getParent()).removeView(view); // <===== FIX
adb.setView(view);
tvCount.setText("Кол-во TextView = " + textViews.size());
tvTime.setText(sdf.format(new Date(System.currentTimeMillis())));
adb.show();
}
Вот стэк трейс с ошибкой:
Как меняется крипторынок и к чему готовиться владельцам криптообменников
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Почему выскакивает NullPointerException, если в функции stringToArray я инициализирую, передавая в качестве параметра SList
Для разработки веб-приложений на Java я использую Gretty плагинЯ хочу разработать Tomcat приложение и разместить исходный код на github'e, но не понимаю...
Столкнулся с такой проблемой: передаю в JSP ArrayList из сервлета с помощью requestsetAttribute(), но при попытке получить элемент этого списка в JSP получаю...