एक संपादित पाठ क्षेत्र का मूल्य प्राप्त करें


439

मैं यूआई तत्वों का निर्माण करना सीख रहा हूं। मैंने कुछ EditText इनपुट फ़ील्ड बनाए हैं। एक बटन के क्लिक पर मैं उस इनपुट फ़ील्ड में टाइप की गई सामग्री पर कब्जा करना चाहता हूं।

<EditText android:id="@+id/name" android:width="220px" />

वह मेरा क्षेत्र है। मुझे सामग्री कैसे मिल सकती है?


21
कुछ हद तक upvotes का संकेत यह साबित करता है कि ओवरराइडिंग toStringसबसे खोज योग्य एपीआई नहीं है, हालांकि फैंसी तकनीक है।
वीवीवी

29
आपकी टिप्पणी में व्याकरण और भावना को समझना वास्तव में कठिन है ...
IcedDante

7
@vemv API के साथ समस्या एक ऐसी Editableवस्तु लौटा रही है, जहाँ उपयोगकर्ता String99% समय की अपेक्षा करते हैं और उनकी आवश्यकता होती है ।
अमीर अली अकबरी

मुझे लगता है कि एंड्रॉइड शांत है, लेकिन मुझे आश्चर्य है कि मुझे इसके लिए Google को (और यह पता लगाने के लिए कि कब मूल्य बदल गया है और बाहर पढ़ने के लिए तैयार है, जो जटिल हो सकता है)। मुझे लगता है कि उन्होंने आवश्यकता से अधिक कठिन बना दिया है!
nsandersen

जवाबों:


685

GetText () का उपयोग करके:

Button   mButton;
EditText mEdit;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mButton = (Button)findViewById(R.id.button);
    mEdit   = (EditText)findViewById(R.id.edittext);

    mButton.setOnClickListener(
        new View.OnClickListener()
        {
            public void onClick(View view)
            {
                Log.v("EditText", mEdit.getText().toString());
            }
        });
}

7
अगर आप EditText को clas-wide दायरे में नहीं रखते हैं, और इसके बजाय इसे OnCreate में घोषित करते हैं, तो यह चाहता है कि इसे अंतिम रूप दिया जाए। मैं मानता हूं कि इसे अंतिम रूप देना बेहतर नहीं है, लेकिन ऐसा करने का एकमात्र तरीका है, इसे कक्षा-व्यापी बनाना? क्या यह इस बारे में जाने का सबसे अच्छा तरीका है?
PFranchise

1
@PFranchise "वर्ग-व्यापी" से आपका क्या अभिप्राय है? पैकेज संरक्षित (उदाहरण के रूप में)? निजी? आप पूरी कक्षा में एक विजेट क्यों नहीं पहुंचाना चाहेंगे?
ज़ेल्फिर कल्टस्टाल

3
<rant> अधिक जानकारी या सुझाव के लिए अनुरोध नहीं। धन्यवाद या +1 भी नहीं। यह भयानक है! कोई यह क्यों सोचेगा कि यह टेक्स्ट बॉक्स डिजाइन करने का सही तरीका है। इसके अलावा, EditText सबसे कम सहज नाम है जो वे पा सकते हैं। </ शेख़ी>
रॉय फ़ॉक

22

मुझे लगता है कि आपको अपने एडिट टेक्स्ट ऑब्जेक्ट "mEdit" को कॉल करते समय इस कोड का उपयोग करना होगा:

myActivity.this.mEdit.getText().toString()

बस सुनिश्चित करें कि संकलक को पता है कि किसको EditTextकॉल करना है और किसका उपयोग करना है।


7
आपको स्पष्टीकरण जोड़ना चाहिए कि "mEdit" कहां से आता है।
null

18

EditTextAndroid में एक नियंत्रण से मूल्य प्राप्त करें । EditText getTextसंपत्ति का उपयोग मूल्य पाने के लिए EditText:

EditText txtname = findViewById(R.id.name);
String name      =  txtname.getText().toString();

11

मुझे उम्मीद है कि यह काम करना चाहिए:

Integer.valueOf(mEdit.getText().toString());

मैंने Integer.getInteger()इसके बजाय विधि की कोशिश की valueOf()- यह काम नहीं किया।


9
यह मान रहा है कि एक इंटेगर है ... सुनिश्चित नहीं है कि आपने प्रश्न में कहां उठाया है।
जोशुआ पिन्टर

9
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

  Button  rtn = (Button)findViewById(R.id.button);
  EditText edit_text   = (EditText)findViewById(R.id.edittext1);

    rtn .setOnClickListener(
        new View.OnClickListener()
        {
            public void onClick(View view)
            {
                Log.v("EditText value=", edit_text.getText().toString());
            }
        });
}

7

आप बटर नाइफ पर भी नज़र डाल सकते हैं । इसका उद्देश्य एनोटेशन का उपयोग करके बॉयलरप्लेट कोड की मात्रा को कम करना है। ये रहा एक सरल उदाहरण:

public class ExampleActivity extends ActionBarActivity {

    @InjectView(R.id.name)
    EditText nameEditText;

    @InjectView(R.id.email)
    EditText emailEditText;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_example);
        Butterknife.inject(this);
    }

    @OnClick(R.id.submit)
    public void onSubmit() {
         Editable name = nameEditText.getText();
         Editable email = emailEditText.getText();
    }
}

बस निम्नलिखित निर्भरता को अपने में जोड़ें build.gradle:

compile 'com.jakewharton:butterknife:x.y.z'

एक विकल्प के रूप में AndroidAnnotations भी है ।


5

सबसे छोटा और सरल

getText(editText);

getText(button);

getText(textView);

थोड़ा वर्कअराउंड

यदि आपके पास नहीं है, तो बस अपनी बेसएक्टिविटी में विधि बनाएं / बेस एक्टिविटी बनाएं।

public class BaseActivity extends AppCompatActivity{
    public String getText(TextView tv) {
        return tv.getText().toString().trim();
    } 
}

और इस बेसएक्टिविटी द्वारा अपनी सभी गतिविधियों का विस्तार करें।

public class YourActivity extends BaseActivity {
  @Override
  public void onCreate(Bundle savedInstanceState){
     getText(editText);
     getText(button);
     getText(textView);
  }
}

ध्यान दें EditText, Buttonफैली हुई है TextView, इसलिए मैंने केवल बनाया getText(TextView tv)


2

एक और अधिक उन्नत तरीका यह होगा कि आप बटरकाइफ़ बाइंडव्यू का उपयोग करें। इससे निरर्थक कोड समाप्त हो जाता है।

आश्रितों के तहत आपके अंतर्ग्रहण में; यह 2 लाइनें जोड़ें।

compile('com.jakewharton:butterknife:8.5.1') {
        exclude module: 'support-compat'
    }
apt 'com.jakewharton:butterknife-compiler:8.5.1'

फिर सिंक करें। मेनएक्टिविटी में उदाहरण बाइंडिंग एडिटेक्स

import butterknife.BindView;   
import butterknife.ButterKnife; 

public class MainActivity {

@BindView(R.id.name) EditTextView mName; 
...

   public void onCreate(Bundle savedInstanceState){
         ButterKnife.bind(this); 
         ...
   }

}

लेकिन यह एक विकल्प है जब आप अधिक आरामदायक महसूस करते हैं या बहुत सारे डेटा के साथ काम करना शुरू करते हैं।


1

चरण 1: name गतिविधि_main.xml के साथ लेआउट बनाएँ

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/rl"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp"
    tools:context=".MainActivity"
    android:background="#c6cabd"
    >
    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="17dp"
        android:textColor="#ff0e13"
        />
    <EditText
        android:id="@+id/et"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/tv"
        android:hint="Input your country"
        />
    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Get EditText Text"
        android:layout_below="@id/et"
        />
</RelativeLayout>

चरण 2: वर्ग Main.class बनाएँ

public class Main extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btn = (Button) findViewById(R.id.btn);
        final TextView tv = (TextView) findViewById(R.id.tv);
        final EditText et = (EditText) findViewById(R.id.et);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String country = et.getText().toString();
                tv.setText("Your inputted country is : " + country);
            }
        });
 }
}


0

इस कोड को आज़माएं

final EditText editText = findViewById(R.id.name); // your edittext id in xml
Button submit = findViewById(R.id.submit_button); // your button id in xml
submit.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) 
    {
        String string = editText.getText().toString();
        Toast.makeText(MainActivity.this, string, Toast.LENGTH_SHORT).show();
    }
});

-8
    Button kapatButon = (Button) findViewById(R.id.islemButonKapat);
    Button hesaplaButon = (Button) findViewById(R.id.islemButonHesapla);
    Button ayarlarButon = (Button) findViewById(R.id.islemButonAyarlar);

    final EditText ders1Vize = (EditText) findViewById(R.id.ders1Vize);
    final EditText ders1Final = (EditText) findViewById(R.id.ders1Final);
    final EditText ders1Ortalama = (EditText) findViewById(R.id.ders1Ortalama);

    //

    final EditText ders2Vize = (EditText) findViewById(R.id.ders2Vize);
    final EditText ders2Final = (EditText) findViewById(R.id.ders2Final);
    final EditText ders2Ortalama = (EditText) findViewById(R.id.ders2Ortalama);
    //
    final EditText ders3Vize = (EditText) findViewById(R.id.ders3Vize);
    final EditText ders3Final = (EditText) findViewById(R.id.ders3Final);
    final EditText ders3Ortalama = (EditText) findViewById(R.id.ders3Ortalama);
    //
    final EditText ders4Vize = (EditText) findViewById(R.id.ders4Vize);
    final EditText ders4Final = (EditText) findViewById(R.id.ders4Final);
    final EditText ders4Ortalama = (EditText) findViewById(R.id.ders4Ortalama);
    //
    final EditText ders5Vize = (EditText) findViewById(R.id.ders5Vize);
    final EditText ders5Final = (EditText) findViewById(R.id.ders5Final);
    final EditText ders5Ortalama = (EditText) findViewById(R.id.ders5Ortalama);
    //
    final EditText ders6Vize = (EditText) findViewById(R.id.ders6Vize);
    final EditText ders6Final = (EditText) findViewById(R.id.ders6Final);
    final EditText ders6Ortalama = (EditText) findViewById(R.id.ders6Ortalama);
    //
    final EditText ders7Vize = (EditText) findViewById(R.id.ders7Vize);
    final EditText ders7Final = (EditText) findViewById(R.id.ders7Final);
    final EditText ders7Ortalama = (EditText) findViewById(R.id.ders7Ortalama);
    //

    /*
     * 
     * 
     * */

    kapatButon.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // kapatma islemi
            Toast.makeText(getApplicationContext(), "kapat",
                    Toast.LENGTH_LONG).show();
        }
    });
    /*
     * 
     * 
     * */
    hesaplaButon.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // hesap islemi

            int d1v = Integer.parseInt(ders1Vize.getText().toString());
            int d1f = Integer.parseInt(ders1Final.getText().toString());
            int ort1 = (int) (d1v * 0.4 + d1f * 0.6);
            ders1Ortalama.setText("" + ort1);
            //
            int d2v = Integer.parseInt(ders2Vize.getText().toString());
            int d2f = Integer.parseInt(ders2Final.getText().toString());
            int ort2 = (int) (d2v * 0.4 + d2f * 0.6);
            ders2Ortalama.setText("" + ort2);
            //
            int d3v = Integer.parseInt(ders3Vize.getText().toString());
            int d3f = Integer.parseInt(ders3Final.getText().toString());
            int ort3 = (int) (d3v * 0.4 + d3f * 0.6);
            ders3Ortalama.setText("" + ort3);
            //
            int d4v = Integer.parseInt(ders4Vize.getText().toString());
            int d4f = Integer.parseInt(ders4Final.getText().toString());
            int ort4 = (int) (d4v * 0.4 + d4f * 0.6);
            ders4Ortalama.setText("" + ort4);
            //
            int d5v = Integer.parseInt(ders5Vize.getText().toString());
            int d5f = Integer.parseInt(ders5Final.getText().toString());
            int ort5 = (int) (d5v * 0.4 + d5f * 0.6);
            ders5Ortalama.setText("" + ort5);
            //
            int d6v = Integer.parseInt(ders6Vize.getText().toString());
            int d6f = Integer.parseInt(ders6Final.getText().toString());
            int ort6 = (int) (d6v * 0.4 + d6f * 0.6);
            ders6Ortalama.setText("" + ort6);
            //
            int d7v = Integer.parseInt(ders7Vize.getText().toString());
            int d7f = Integer.parseInt(ders7Final.getText().toString());
            int ort7 = (int) (d7v * 0.4 + d7f * 0.6);
            ders7Ortalama.setText("" + ort7);
            //




            Toast.makeText(getApplicationContext(), "hesapla",
                    Toast.LENGTH_LONG).show();
        }
    });
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.