Dapatkan Nilai bidang Edit Teks


439

Saya belajar cara membuat elemen UI. Saya telah membuat beberapa bidang input EditText. Pada klik Tombol saya ingin mengambil konten yang diketikkan ke bidang input itu.

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

Itu bidang saya. Bagaimana saya bisa mendapatkan konten?


21
Jumlah upvotes agak membuktikan bahwa mengesampingkan toStringtidak menghasilkan API yang paling mudah ditemukan, bagaimanapun mewahnya teknik tersebut.
vemv

29
Tata bahasa dan sentimen dalam komentar Anda benar-benar sulit dimengerti ...
IcedDante

7
@vemv Masalah dengan API adalah mengembalikan Editableobjek tempat pengguna mengharapkan dan membutuhkan String99% sederhana .
Amir Ali Akbari

Saya pikir Android itu keren, tapi saya terkejut saya harus ke Google untuk ini (dan untuk bagaimana mendeteksi ketika nilainya telah berubah dan siap untuk dibacakan, yang dapat menjadi rumit). Saya pikir mereka membuat ini lebih sulit daripada yang diperlukan!
nsandersen

Jawaban:


685

Dengan menggunakan 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
Jika Anda tidak menempatkan EditText dalam lingkup clas-lebar, dan sebaliknya mendeklarasikannya di OnCreate, itu ingin dinyatakan sebagai final. Saya berasumsi lebih baik tidak menjadikannya final, tetapi apakah satu-satunya cara untuk melakukannya, untuk membuatnya menjadi kelas-lebar? APAKAH menjadikannya kelas-lebar cara terbaik untuk melakukan ini?
PFranchise

1
@Pranchise Apa yang Anda maksud dengan "kelas-lebar"? Paket terproteksi (seperti pada contoh)? Pribadi? Mengapa Anda tidak ingin memiliki widget yang dapat diakses di seluruh kelas?
Zelphir Kaltstahl

3
<rant> Bukan permintaan untuk informasi atau saran lebih lanjut. Juga bukan ucapan terima kasih atau +1. INI MENGERIKAN! Mengapa orang berpikir ini adalah cara yang tepat untuk mendesain kotak teks. Juga, EditText adalah nama paling tidak intuitif yang bisa mereka temukan. </rant>
Roy Falk

22

Saya kira Anda harus menggunakan kode ini saat memanggil "mEdit" objek EditText Anda:

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

Pastikan saja kompiler mengetahui yang EditTextharus dipanggil dan digunakan.


7
Anda harus menambahkan penjelasan dari mana "mEdit" berasal.
null

18

Dapatkan nilai dari EditTextkontrol di android. EditText getTextpenggunaan properti untuk mendapatkan nilai EditText:

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

11

Saya harap yang ini bekerja:

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

Saya mencoba Integer.getInteger()metode bukannya valueOf()- tidak berhasil.


9
Ini dengan asumsi nilainya adalah Integer ... tidak yakin di mana Anda mengambilnya dalam pertanyaan.
Joshua Pinter

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

Anda mungkin juga ingin melihat Butter Knife . Ini bertujuan untuk mengurangi jumlah kode boilerplate dengan menggunakan anotasi. Ini adalah contoh sederhana:

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();
    }
}

Cukup tambahkan ketergantungan berikut ke Anda build.gradle:

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

Sebagai alternatif ada juga AndroidAnnotations .


5

Terpendek & Sederhana

getText(editText);

getText(button);

getText(textView);

Solusi Kecil

Cukup buat metode di BaseActivity Anda / buat BaseActivity jika Anda tidak punya.

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

Dan perluas semua aktivitas Anda dengan BaseActivity ini.

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

Perhatikan bahwa EditText, Buttonmemanjang TextView, jadi saya buat saja getText(TextView tv).


2

Cara yang lebih maju adalah dengan menggunakan butterknife bindview. Ini menghilangkan kode yang berlebihan.

Di kelas Anda di bawah dependensi; tambahkan 2 baris ini.

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

Kemudian sinkronkan. Contoh mengikat edittext di MainActivity

import butterknife.BindView;   
import butterknife.ButterKnife; 

public class MainActivity {

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

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

}

Tapi ini adalah alternatif begitu Anda merasa lebih nyaman atau mulai bekerja dengan banyak data.


1

langkah 1: buat tata letak dengan nama activity_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>

Langkah 2: Buat kelas 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);
            }
        });
 }
}

1

Nilai string = YourEditText.getText (). ToString;


Apa perbedaan jawaban ini dari jawaban yang sudah ada?
Matt Ke

0

Coba kode ini

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();
        }
    });
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.