Как добавить кнопку очистки во всплывающем окне

1

Я новичок в разработке Android. Я создал всплывающее окно, которое вызывается нажатием кнопки из основного класса активности. У меня есть текстовое поле Edit в моем pop-окне. могу ли я удалить все это текстовое поле редактирования во всплывающем окне нажатием кнопки? если да, то как? Заранее спасибо!! Ниже приведен пример, который я пытаюсь, но он дает исключение с нулевой точкой.

 public void initatePopupWindow(View view)
{
    try
    {
        LayoutInflater inflater=(LayoutInflater)  ContactdetailsActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View layout=inflater.inflate(R.layout.popupwindow,(ViewGroup)findViewById(R.id.popuplayout));
        pw = new PopupWindow(layout, 500, 500, true);
        pw.showAtLocation(layout, Gravity.CENTER, 0, 0);
        Button b1=(Button)layout.findViewById(R.id.cancel);
       b1.setOnClickListener(cancel_button_click_listener);   
       Button b2=(Button)layout.findViewById(R.id.clear);

       b2.setOnClickListener(clear_fields);


    }
    catch (Exception e)
    {

    }
}
    private OnClickListener clear_fields= new OnClickListener()
    {
        public void onClick(View v)
        {

        ViewGroup group= (ViewGroup)findViewById(R.id.popuplayout);
            for(int i=0,count=getChildCount(); i<count; ++i)
            {
                View v1= group.getChildAt(i);
                if(v1 instanceof EditText)
                {
                    ((EditText)v1).setText("");
                }
                if(v1 instanceof ViewGroup && (((ViewGroup)v1).getChildCount() > 0))
                    onClick((ViewGroup)v1);
            }
        }
    };
    private OnClickListener cancel_button_click_listener=new OnClickListener()
    {
        public void onClick(View v)
        {
        pw.dismiss();
        }
    };

}
  • 0
    Пожалуйста, опубликуйте свои ошибки в logcat.
Теги:

1 ответ

0
Лучший ответ

Получаете ли вы свои ошибки на этой линии?

ViewGroup group= (ViewGroup)findViewById(R.id.popuplayout);

ViewGroup group= (ViewGroup) layout.findViewById(R.id.popuplayout);//layout is your inflated

Я думаю, что это может быть так, что вам нужно использовать значение, которое вы вызывали на инфляторе макета.

Во всяком случае, я думаю, вы должны сделать это: получите ссылку на все ваши тексты редактирования и затем очистите их один за другим. Возможно, сохраните массив текстов редактирования и пройдите через них и установите их тексты на "" вместо проверки типа.

  • 0
    Спасибо за выявление проблемы. Я получаю сообщение об ошибке только в этой строке. Но макет просмотра, для которого я вызвал инфлятор макета, находится в какой-то другой функции, поэтому при использовании ViewGroup group = (ViewGroup) layout.findViewById (R.id.popuplayout ); это показывает, что макет не может быть решен. Можете ли вы помочь мне с этим? Спасибо
  • 0
    попробуйте сделать глобальную переменную компоновки или укажите окончательную.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню