1

私はアンドロイド開発が初めてです。メイン アクティビティ クラスからボタン クリックで呼び出されるポップアップ ウィンドウを作成しました。ポップ ウィンドウに編集テキスト フィールドがあります。ボタンをクリックして、ポップアップ ウィンドウの編集テキスト フィールドをすべてクリアできますか? はいの場合、どのように?前もって感謝します!!以下は私が試みていることですが、ヌルポイントの例外を与えています。

 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();
        }
    };

}
4

1 に答える 1

0

この行でエラーが発生していますか?

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

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

レイアウトインフレータで呼び出した値を使用する必要があるためだと思います。

とにかく、代わりに行うべきだと思います: すべての編集テキストの参照を取得し、それらを 1 つずつクリアします。おそらく、編集テキストの配列を保持し、それらを調べて、タイプをチェックする代わりにテキストを "" に設定します。

于 2012-06-23T23:49:11.863 に答える