입력시 EditText의 텍스트 지우기


92

edittext 요소를 클릭하면 현재 내용이 지워지도록 설정하고 onclicklistener를 시도하고 있습니다. 여기에 문제가 있습니까? 이 코드를 컴파일하면 강제 종료 및 ActivityManager : Ca n't dispatch DDM chunk 4d505251 : no handler defined error가 발생합니다.

public class Project extends Activity implements OnClickListener {
    /** Called when the activity is first created. */
    EditText editText = (EditText)findViewById(R.id.editText1);
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        editText.setOnClickListener(this);

        setContentView(R.layout.main);

    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        editText.setText("");
    }
}

EditText editText = (EditText)findViewById(R.id.editText1);여기에있는이 줄은 onCreate 메서드 안에 있어야합니다. 컨텍스트에 의한 함수 호출입니다.
Some Noob Student

1
EditText 이동 editText = (EditText) findViewById (R.id.editText1); setContentView (R.layout.main); 이후
Diego Torres Milano

findViewById전화를 걸기 전까지 는 사용할 수 없습니다 setContentView.
Ted Hopp 2011 년

2
네! 먼저 setContentView (id)를 호출해야합니다. 시스템이 화면 내용을 표시 할 수 있도록 화면 내용에있을 가능성이있는 EditText를 지적합니다. 그렇지 않으면 강제 닫기 대화 상자에 예외가 표시됩니다.
Adil Soomro 2011 년

2
"힌트"를에 설정 EditText하면 비어있을 때 텍스트가 표시되고 사용자가 입력을 시작하면 사라집니다. xml에 추가 android:hint="your hint text here"하십시오 EditText. '힌트'는 일반적으로 EditText의 용도를 나타내는 데 사용됩니다. 당신이 찾고있는 것이 아닐 수도 있지만 EditText, "힌트"가 내가 정말로 찾고있는 일을한다는 것을 발견 할 때까지 클릭 클릭 을 지우 려고했습니다.
Jecimi

답변:


135

먼저 setContentView(R.layout.main)다른 모든 초기화 를 호출해야합니다 .

아래 코드를 시도하십시오.

public class Trackfolio extends Activity implements OnClickListener {
    /** Called when the activity is first created. */
    public EditText editText;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        editText = (EditText) findViewById(R.id.editText1);
        editText.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        editText.getText().clear(); //or you can use editText.setText("");
    }
}

6
안녕하세요, 이것이 오래된 답변이라는 것을 알고 있지만 두 옵션 ( .clear또는 .setText(""))을 모두 언급하는 유일한 사람입니다 . 차이점이 있습니까? 언제 어떤 것을 사용해야합니까, 아니면 완전히 동일합니까? 감사.
Alex는

editText.getText (). clear (); 안 드 로이드 스튜디오 3.5.1에서 씨에 대 한 작동하지 않았다
Abdul Wahid

186

또한 아래 코드를 사용할 수 있습니다.

editText.getText().clear();

프로그래밍 방식으로 수행하려는 경우 좋습니다.
John Smith

2
알리, 당신이 절대적으로 옳습니다. 그러나 먼저 getText () 메소드를 호출합니다. clear (); 메소드가있는 Editable 인스턴스를 반환합니다.
Serhii Nadolynskyi

42

android:hintEditText 의 속성을 사용하십시오 . 이 텍스트는 상자가 비어 있고 초점이 맞지 않을 때 표시되지만 EditText 상자를 선택하면 사라집니다.


이것은 허용되는 대답이어야합니다. 단순성을 위해 +1입니다.
John Smith

이것은 디자인 관점에서 정답입니다! 감사합니다
kyxap

11

두 가지 방법으로 EditText 데이터를 지울 수 있습니다.

첫 번째 설정 EditText는 아래 줄과 같이 비어 있습니다.

editext.setText("");

다음과 같이 EditText 데이터를 지우는 두 번째

editText.getText().clear();

두 번째 방법을 제안합니다


7

코드는 다음과 같아야합니다.

    public class Project extends Activity implements OnClickListener {
            /** Called when the activity is first created. */
            EditText editText;
            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);            

                setContentView(R.layout.main);
                editText = (EditText)findViewById(R.id.editText1);
                editText.setOnClickListener(this);            
            }

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                if(v == editText) {
                    editText.setText("");
                }
            }
        }

4
public EditText editField;
public Button clear = null;
@Override
public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
    setContentView(R.layout.text_layout);
   this. editField = (EditText)findViewById(R.id.userName);
this.clear = (Button) findViewById(R.id.clear_button);  
this.editField.setOnClickListener(this);
this.clear.setOnClickListener(this);
@Override
public void onClick(View v) {

    // TODO Auto-generated method stub
if(v.getId()==R.id.clear_button){
//setText will remove all text that is written by someone
    editField.setText("");
    }
}

4

editText 값을 지우는 것은 매우 간단합니다. 버튼을 클릭하면 한 줄 코드 만 따릅니다.

내부 버튼 또는 원하는 곳 어디에서나 사용하십시오.

editText.setText("");   

3
package com.example.sampleproject;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;

public class SampleProject extends Activity {
    EditText mSearchpeople;
    Button mCancel , msearchclose;
    ImageView mprofile, mContact, mcalender, mConnection, mGroup , mFollowup , msetting , mAddacard;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dashboard);
        mSearchpeople = (EditText)findViewById(R.id.editText1);
        mCancel = (Button)findViewById(R.id.button2);
        msearchclose = (Button)findViewById(R.id.button1);
        mprofile = (ImageView)findViewById(R.id.imageView1);
        mContact = (ImageView)findViewById(R.id.imageView2);
        mcalender = (ImageView)findViewById(R.id.imageView3);
        mConnection = (ImageView)findViewById(R.id.imageView4);
        mGroup = (ImageView)findViewById(R.id.imageView5);
        mFollowup = (ImageView)findViewById(R.id.imageView6);
        msetting = (ImageView)findViewById(R.id.imageView7);
        mAddacard = (ImageView)findViewById(R.id.imageView8);
    }
    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        mCancel.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                mSearchpeople.clearFocus();

            }
        });
    }


}

PLZ 전체 코드를 게시 찍기 위해 그들을 쉽게 이해하기는 도움이 필요한 솔루션을 제공 할 수 없음
Digvesh 파텔

3

위의 솔루션을 구현하는 동안 내가 어떤 실수를했는지 모르겠습니다. bt 나에게 실패했습니다.

txtDeck.setOnFocusChangeListener(new OnFocusChangeListener() {
    @Override       
    public void onFocusChange(View v, boolean hasFocus) {
        txtDeck.setText("");
    }
});

이것은 나를 위해 작동합니다.


2

// 클리어 버튼 클릭시 클리어

firstName = (EditText) findViewById (R.id.firstName);

    clear = (Button) findViewById(R.id.clearsearchSubmit);

    clear.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if (v.getId() == R.id.clearsearchSubmit);
            firstName.setText("");
        }
    });

이렇게하면 입력 한 잘못된 키워드를 지우는 데 도움이되므로 백 스페이스 키를 계속 누르는 대신 버튼을 클릭하여 모든 것을 지울 수 있습니다. 도움이되기를 바랍니다.


1
final EditText childItem = (EditText) convertView.findViewById(R.id.child_item);
childItem.setHint(cellData);

childItem.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        //Log.d("NNN", "Has focus " + hasFocus);
        if (hasFocus) {
            Toast.makeText(ctx.getApplicationContext(), "got the focus", Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(ctx.getApplicationContext(),
            "loss the focus", Toast.LENGTH_SHORT).show();
        }
        return;
    });

1

빈 문자열을 설정하여 편집 텍스트를 지울 수 있습니다.

    editext.setText("");

1

XML에서는 다음과 같이 작성할 수 있습니다.

    <EditText
        android:id="@+id/txtsearch"
        android:layout_width="250dp"
        android:layout_height="match_parent"
        android:layout_gravity="right"
        android:layout_weight="1"
        android:background="@drawable/roundlayoutbutton1"
        android:ems="10"
        android:gravity="center"
        android:inputType="text"
        android:textAllCaps="true"
        android:text="search_xxxx"

        android:textColor="@color/colorPrimaryDark"
        android:visibility="visible" />

그리고 자바 클래스에서는 다음 중 하나를 가질 수 있습니다.

    EditText searchHost;

OnCreate () 작성 :

    searchHost=findViewById(R.id.txtsearch);

    searchHost.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if(searchHost.getText().toString().equalsIgnoreCase("search_xxxx")){
                searchHost.setText("");
                Toast.makeText(getApplicationContext(),"Enter you text xxx...", Toast.LENGTH_LONG).show();
            }
        }
    });

그것은 나를 위해 잘 작동합니다.


1

Kotlin의 경우 :

두 개의 확장을 만듭니다. 하나는 EditText 용이고 다른 하나는 TextView 용입니다.

EditText :

fun EditText.clear() { text.clear() }

TextView :

fun TextView.clear() { text = "" }

다음과 같이 사용하십시오.

myEditText.clear()

myTextView.clear()

0

코드에서도 EditText의 'android : hint'속성을 사용할 수 있습니다.

editText.setHint(CharSequence hint / int resid);

그러면 onClickListener 또는 이와 유사한 것이 필요하지 않습니다. 그러나 힌트 값이 전달되지 않는다는 점을 고려하십시오. editText는 빈 상태로 유지됩니다. 이 경우 deflault 값으로 editText를 설정할 수 있습니다.

if(editText.getText().toString().equals("")) { 
...use your default value instead of the editText... }

0

EditText의 사용이 필수가 아닌 경우 새 재료 구성 요소를 사용하여이 동작을 쉽게 구현할 수 있습니다.

<com.google.android.material.textfield.TextInputLayout
            style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/hint_field"
            app:endIconDrawable="@drawable/ic_close_black_24dp"
            app:endIconMode="clear_text"
            app:endIconTint="@color/black">

            <com.google.android.material.textfield.TextInputEditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/hint_value"
                android:maxLines="1"
                android:text="@{itemModel.value}" />

        </com.google.android.material.textfield.TextInputLayout>

텍스트를 지우는 버튼에 대해 원하는 드로어 블과 실행될 작업을 지정하기 만하면됩니다. 텍스트를 지우려면 iconMode = "clear_text"를 사용할 수 있지만 "password_toggle"도 사용할 수 있습니다.


0

그것은의 단순 : 위젯 변수 (선언 editText, textView, button클래스 등)하지만에서 초기화 onCreatesetContentView.

문제는 레이아웃의 위젯에 액세스하려고 할 때 먼저 레이아웃을 선언해야한다는 것입니다. 레이아웃 선언은 setContentView. 을 통해 위젯 변수를 초기화 하면 기본 레이아웃의 위젯에 findViewById액세스 할 수 있습니다 id.setContentView 됩니다.

나는 당신이 그것을 얻기를 바랍니다!


-1

나는 당신이 이것을 찾고 있는지 확실하지 않습니다

    {
    <EditText
     .
     . 
     android:hint="Please enter your name here">
    }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.