Metni Düzenle alanının Değerini Al


439

Kullanıcı arayüzü öğelerini nasıl oluşturacağımı öğreniyorum. Birkaç EditText girdi alanı oluşturdum. Bir Düğme tıklandığında o giriş alanına yazılan içeriği yakalamak istiyorum.

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

Bu benim alanım. İçeriği nasıl alabilirim?


21
Upvotes bir şekilde, geçersiz kılmanın toStringen keşfedilebilir API'yi vermediğini kanıtlıyor , ancak fantezi tekniktir.
vemv


7
@vemv API ile ilgili sorun, Editablekullanıcıların String% 99'luk basit bir bekleyiş ve ihtiyaç duydukları bir nesneyi döndürmektir .
Amir Ali Akbari

Android'in harika olduğunu düşünüyorum, ancak bunun için Google'a (ve değerin ne zaman değiştiğini ve okumaya hazır olduğunu saptamak için nasıl karmaşık olduğum) şaşırdım. Sanırım bunu gereğinden fazla zorladılar!
nsandersen

Yanıtlar:


685

GetText () kullanarak:

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'i clas-geniş kapsamına yerleştirmez ve bunun yerine OnCreate'de bildirirseniz, son olarak bildirilmesini ister. Nihai yapmamak daha iyidir, ama bunu yapmanın tek yolu sınıf çapında yapmak mı? Sınıfta bunu yapmanın en iyi yolu mu?
PFranchise

1
@PFranchise "Sınıf çapında" ile ne demek istiyorsun? Paket korumalı (örnekteki gibi)? Özel? Neden tüm sınıfta bir widget'ın erişilebilir olmasını istemezsiniz?
Zelphir Kaltstahl

3
<rant> Daha fazla bilgi veya öneri talebi değil. Ayrıca bir teşekkür ya da +1. BU KORKUNÇ! Neden kimse bunun bir metin kutusu tasarlamanın doğru yolu olduğunu düşünüyor? Ayrıca, EditText bulabilecekleri en az sezgisel isimdir. </rant>
Roy Falk

22

Sanırım EditText nesnesi "mEdit" çağırırken bu kodu kullanmak zorunda kalacak:

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

Derleyicinin hangisini EditTextarayacağını ve kullanacağını bildiğinden emin ol .


7
"mEdit" in nereden geldiğine ilişkin açıklama eklemelisiniz.
null

18

EditTextAndroid bir kontrolden değer alın . EditText getTextözellik değerini an almak için kullanın EditText:

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

11

Umarım bu çalışmalıdır:

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

Bunun Integer.getInteger()yerine yöntemi denedim valueOf()- işe yaramadı.


9
Bu, değerin bir Tamsayı olduğunu varsayarız ... bunu soruda nereden aldığınızdan emin değilim.
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

Ayrıca Butter Knife'a da göz atmak isteyebilirsiniz . Ek açıklama kullanarak demirbaş kod miktarını azaltmayı amaçlamaktadır. İşte basit bir örnek:

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

Sadece aşağıdaki bağımlılığı ekleyin build.gradle:

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

Alternatif olarak AndroidAnnotations da var .


5

En Kısa ve En Basit

getText(editText);

getText(button);

getText(textView);

Küçük Geçici Çözüm

Sadece BaseActivity'nizde yöntem yapın / yoksa BaseActivity'yi oluşturun.

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

Ve tüm faaliyetlerinizi bu BaseActivity ile genişletin.

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

Unutmayın EditText, Buttonuzatır TextView, bu yüzden sadece yarattım getText(TextView tv).


2

Daha gelişmiş bir yol butterknife bindview kullanmak olacaktır. Bu, yedek kodu ortadan kaldırır.

Bağlantınızda bağımlılıklar altında; bu 2 satırı ekleyin.

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

Ardından senkronize edin. MainActivity'de bağlama metni düzenleme örneği

import butterknife.BindView;   
import butterknife.ButterKnife; 

public class MainActivity {

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

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

}

Ancak kendinizi daha rahat hissettiğinizde veya çok fazla veriyle çalışmaya başladığınızda bir alternatif budur.


1

1. adım: activity_main.xml adıyla düzen oluşturun

<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. Adım: Main.class sınıfı oluşturun

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

Dize değeri = YourEditText.getText (). ToString;


Bu cevap zaten var olan cevaplardan nasıl farklı?
Matt Ke

0

Bu kodu deneyin

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();
        }
    });
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.