2014-01-17 2 views
1

У меня есть форма edittext, которая может быть заполнена, я хочу очистить ее от onClick текста, поэтому я помещаю onClick, который переходит к моей ясной функции в основном.Android onClick для edittext, Как я могу называть edittext?

Я, однако, не знаю, как правильно настроить адрес, который я хочу. Я хочу очистить их от них.

public void clear(View v) { 
    @+id/toptext.setText(""); 

} 

Это - XML ​​для этого конкретного текста.

<TextView 
android:id="@+id/toptext" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:background="#303030" 
android:text="@string/toptext" 
android:textAppearance="? 
android:attr/textAppearanceLarge" 
android:textColor="#33B5E5" 
android:textSize="50sp" 
android:onClick="clear" /> 
+0

Я хочу очистить ДВЕ из них. ,, where is 2nd one – Manmohan

+0

Я понял, могу ли я понять, как очистить его, я могу просто очистить второй справа под ним в понятной функции. – Jayizzle

+0

Помогли ли вам какие-либо ответы? –

ответ

2

Создайте экземпляры ваших EditTexts, используя id из EditTexts в макете XML. Затем используйте setText и сделайте их пустыми.

public void clear(View v) { 

    EditText et = (EditText)findViewById(R.id.theIdOfYourEditText); 
    EditText et2 = (EditText)findViewById(R.id.theIdOfYourOtherEditText); 
    et.setText(""); 
    et2.setText(""); 
} 

Редактировать по какой-то причине описанный выше способ не работает. Это был конец решение:

// Put one of these in your onCreate method: 

TextView tt = (TextView)findViewById(R.id.toptext); 
tt.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 

     EditText et = (EditText)findViewById(R.id.theIdOfYourEditText); 
     EditText et2 = (EditText)findViewById(R.id.theIdOfYourOtherEditText); 
     et.setText(""); 
     et2.setText(""); 

     return true; 
    } 
}); 

// or 

TextView tt = (TextView)findViewById(R.id.toptext); 
tt.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 

     EditText et = (EditText)findViewById(R.id.theIdOfYourEditText); 
     EditText et2 = (EditText)findViewById(R.id.theIdOfYourOtherEditText); 
     et.setText(""); 
     et2.setText(""); 
    } 
}); 
+0

Итак, я заменил ваш код идентификаторами, и он компилируется, но нажимает на textview не очищает поля. – Jayizzle

+0

@ user3204660 Я тестировал его с помощью TextView, и он тоже не работает. Должно быть что-то с методом onClick для TextView. Попробуйте это и скажите, если это сработает (используя onClick и onTouch-слушатели): http://pastie.org/8643465 –

+0

Спасибо, майк, сейчас он работает, теперь мне просто нужно выяснить, КАК ... – Jayizzle

0

Во-первых, получить ссылку на ваш TextView по телефону findViewById:

TextView textView = (TextView) findViewById(R.id.toptext); 

Затем используйте его для очистки:

textView.setText(""); 
1

Попробуйте это:

TextView tv = (TextView) findViewById(R.id.toptext); 
tv.setText("Whatever you want!"); 
0

Я думаю, вместо установки "", u должен использовать null как.

TextView textView = (TextView) findViewById(R.id.toptext); 
textView.setText(null); 
+1

это неправда, («») работает, проблема в другом месте, –

+1

Почему? Что случилось с setText ("")? – Melquiades

+0

, если мы используем null вместо "", мы также можем видеть подсказку EditText – Manmohan

0

Используйте param передается onClick() (v)

public void clear(View v) 
{ 
    ((TextView)v).setText(""); 
} 

Предполагая, что вы хотите, чтобы очистить текст в TextView, что у вас есть onClick привязан. View, прошедший в clear(), является View, который был нажат, поэтому вы просто нанесете его соответствующим View (TextView), то вы можете использовать его как обычно.

Таким образом, это очистит текст в зависимости от того, что было нажато TextView.

1

Вы можете использовать этот код:

public void clear(View v) { 
    if (v.getId() == R.id.toptext) { 
     ((EditText) v).setText(null); 
    } 
} 

Аналогичным образом добавьте еще один, если условие для другого EditText.

Смежные вопросы