0

この問題に関する他の質問を見ましたが、解決策がうまくいきません。ページに多数の edittext フィールドがあり、ボタンを 1 回押すだけでそれらをリセットできるようにしたいと考えています。このスレッドからソリューションを実装しましたが、線形レイアウトをネストしており、メイン コンテナーの直接の子である edittext のみをクリアします。すべての edittext フィールドを見つけるにはどうすればよいですか、それともそれぞれを参照する必要がありますか?

私のxmlファイル構造は次のとおりです。

<ScrollView>
    <LinearLayout android:id="@+id/MainParent">
        <LinearLayout>
            TextView
            EditText
        </LinearLayout>
        <LinearLayout>
            TextView
            EditText
        </LinearLayout>
        <LinearLayout>
            TextView
            EditText
        </LinearLayout>
        EditText
        <LinearLayout>
            Button1
            Button2
        </LinearLayout>
    </LinearLayout>
</ScrollView>

Java ファイルからのスニペット:

ViewGroup group = (ViewGroup)findViewById(R.id.MainParent);
       for (int i = 0, count = group.getChildCount(); i < count; ++i) {
           View view = group.getChildAt(i);
               if (view instanceof EditText) {
                   ((EditText)view).setText("");
       }
4

3 に答える 3

4

各EditTextを具体的に参照することに興味がない場合は、階層を処理するための再帰関数を作成します。

public void clearAll(ViewGroup root) {
    for (int i = 0, j = root.getChildCount(); i < j, i++) {
        View view = root.getChildAt(i);
        if (view instanceof ViewGroup) {
            clearAll((ViewGroup) view);
            continue;
        }
        if (view instanceof EditText) {
            ((EditText) view).setText("");
            continue;
        }
    }
}

次に、電話するだけです。

clearAll((ViewGroup) findViewById(R.id.MainParent));
于 2012-10-15T13:36:28.537 に答える
1
LinearLayout group = (LinearLayout)findViewById(R.id.MainParent);
       for (int i = 0, count = group.getChildCount(); i < count; ++i)
         {
           View view = group.getChildAt(i);
               if (view instanceof EditText) {
                   ((EditText)view).setText("");
       }
于 2012-10-15T13:16:57.237 に答える
1

アクションの onClick の後、以下の手順を実行します。

EditText firstEditText = (EditText) findViewById(R.id.yoursXmlId);
firstEditText.setText("");
于 2012-10-15T13:09:35.057 に答える