Я новичок в разработке 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();
}
};
}
Получаете ли вы свои ошибки на этой линии?
ViewGroup group= (ViewGroup)findViewById(R.id.popuplayout);
ViewGroup group= (ViewGroup) layout.findViewById(R.id.popuplayout);//layout is your inflated
Я думаю, что это может быть так, что вам нужно использовать значение, которое вы вызывали на инфляторе макета.
Во всяком случае, я думаю, вы должны сделать это: получите ссылку на все ваши тексты редактирования и затем очистите их один за другим. Возможно, сохраните массив текстов редактирования и пройдите через них и установите их тексты на "" вместо проверки типа.