संपादित किए जाने पर EditText में स्पष्ट पाठ


92

मैं सेट करने और ऑनक्लिक करने की कोशिश कर रहा हूं ताकि जब मैं एडिट टेक्स्ट तत्व के भीतर क्लिक करूं तो यह अपनी वर्तमान सामग्री को साफ कर दे। क्या यहाँ कुछ गड़बड़ है? जब मैं इस कोड को संकलित करता हूं तो मुझे एक बल छोड़ दिया जाता है और ActivManager: DDM को रद्दी नहीं भेज सकता 4d505251: कोई हैंडलर परिभाषित त्रुटि नहीं।

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);यहां इस लाइन को ऑनक्रिट विधि के अंदर रखा जाना चाहिए। यह संदर्भ द्वारा एक फ़ंक्शन कॉल है।
कुछ नोब स्टूडेंट

1
EditText editText = (EditText) findViewById (R.id.editText1); setContentView (R.layout.main) के बाद;
डिएगो टोरेस मिलानो

आपके findViewByIdद्वारा कॉल किए जाने के बाद तक आप उसका उपयोग नहीं कर सकते setContentView
टेड होप

2
हां! आपको सबसे पहले setContentView (id) पर कॉल करना होगा। ताकि सिस्टम स्क्रीन सामग्री को प्रदर्शित कर सके, और फिर आप EditText को इंगित करते हैं जो संभवतः आपकी स्क्रीन सामग्री में मौजूद होगा। अन्यथा यह फोर्स क्लोज संवाद के साथ एक अपवाद दिखाएगा।
आदिल सूमो

2
ध्यान दें कि आप एक "संकेत" को एक पर सेट कर सकते हैं EditText, जो खाली होने पर एक पाठ प्रदर्शित करता है और जब उपयोगकर्ता टाइप करना शुरू करता है तो वह गायब हो जाता है। android:hint="your hint text here"अपने EditTextको xml में जोड़ें । एक 'संकेत' आमतौर पर यह इंगित करने के लिए उपयोग किया जाता है कि EditText किस लिए बनाया गया है। यह शायद वह नहीं है जिसे आप ढूंढ रहे हैं, लेकिन मैं EditTextक्लिक पर क्लीयर होना भी चाह रहा था जब तक कि मुझे पता नहीं चला कि "संकेत" ने वह किया जो मैं वास्तव में देख रहा था।
जेकीमी

जवाबों:


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("")) का उल्लेख करते हैं । क्या कोई मतभेद हैं? मुझे कब उपयोग करना चाहिए या वे पूरी तरह से एक ही हैं? धन्यवाद।
एलेक्स

editText.getText () स्पष्ट ()।; एंड्रॉयड स्टूडियो 3.5.1 में श्री के लिए काम NT था
अब्दुल वाहिद

186

इसके अलावा आप नीचे दिए गए कोड का उपयोग कर सकते हैं

editText.getText().clear();

यह बहुत अच्छा है अगर आप प्रोग्राम करना चाहते हैं।
जॉन स्मिथ

2
अली, आप बिल्कुल सही हैं। लेकिन हम पहले getText () को कॉल करते हैं। यह हमें संपादन योग्य उदाहरण देता है, जिसमें विधि स्पष्ट है ();
सेरही नाडोलिनेस्की

42

बस android:hintअपने EditText में विशेषता का उपयोग करें । जब बॉक्स खाली होता है और फोकस नहीं किया जाता है तो यह टेक्स्ट दिखाता है, लेकिन EditText बॉक्स का चयन करने पर गायब हो जाता है।


यह सरलता के लिए स्वीकृत उत्तर, +1 होना चाहिए।
जॉन स्मिथ

यह डिजाइन के दृष्टिकोण से सही उत्तर है! धन्यवाद
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 मानों को साफ करने के लिए बहुत ही सरल। जब आप बटन पर क्लिक करते हैं तो केवल 1 लाइन कोड का पालन करें।

अंदर बटन या कहीं भी यू चाहते हैं। केवल इस का उपयोग करें

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 Patel

3

मुझे नहीं पता कि उपरोक्त समाधानों को लागू करते समय मैंने क्या गलतियाँ कीं, क्योंकि वे मेरे लिए असफल थे

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

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

कोटलिन के लिए:

दो एक्सटेंशन बनाएं, एक EditText के लिए और एक TextView के लिए

लिखाई में बदलाव:

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

व्याख्यान दर्शन:

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

और इसका उपयोग करें

myEditText.clear()

myTextView.clear()

0

आप अपने EditText में 'android: hint' विशेषता का उपयोग कोड से भी कर सकते हैं:

editText.setHint(CharSequence hint / int resid);

तो फिर आप किसी भी onClickListener या इसी तरह की जरूरत नहीं है। लेकिन विचार करें कि संकेत मान पारित नहीं किया जाएगा। 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आदि) को कक्षा में घोषित करें लेकिन onCreateबाद में इसे प्रारंभ करें setContentView

समस्या तब होती है जब आप किसी लेआउट के विजेट को एक्सेस करने की कोशिश करते हैं, पहले आपको लेआउट को घोषित करना होगा। लेआउट की घोषणा है setContentView। और जब आप विजेट वैरिएबल को इनिशियलाइज़ करते findViewByIdहैं, तो आप idविजेट के मुख्य लेआउट में विजेट तक पहुँच सकते हैंsetContentView

मैं आशा करता हूं आप उसे प्राप्त करें!


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.