wake-up-neo.com

Holen Sie sich den Wert eines Textfeldes

Ich lerne, UI-Elemente zu erstellen. Ich habe ein paar EditText-Eingabefelder erstellt. Mit einem Klick auf eine Schaltfläche möchte ich den in dieses Eingabefeld eingegebenen Inhalt erfassen.

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

Das ist mein Feld. Wie kann ich den Inhalt bekommen?

400
Harsha M V

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

Ich vermute, Sie müssen diesen Code verwenden, wenn Sie das EditText-Objekt "mEdit" aufrufen:

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

Stellen Sie einfach sicher, dass der Compiler weiß, welches EditText aufzurufen und zu verwenden ist.

20
Ahmed Lotfy

Holen Sie sich einen Wert aus einem EditText-Steuerelement in Android. EditTextgetText-Eigenschaft verwenden, um den Wert einer EditText-Eigenschaft abzurufen:

EditText txtname = (EditText)findViewById(R.id.name);
String name      =  txtname.getText().toString();
13
Chandra Kumar
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());
            }
        });
}
10
user1554037

Ich hoffe, dass dies funktionieren sollte:

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

Ich habe Integer.getInteger() method anstelle von valueOf() ausprobiert - es hat nicht funktioniert. 

Vielleicht möchten Sie auch einen Blick auf Buttermesser werfen. Es zielt darauf ab, den Boilerplate-Code durch Annotation zu reduzieren. Hier ist ein einfaches Beispiel:

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

Fügen Sie Ihrem build.gradle einfach die folgende Abhängigkeit hinzu:

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

Als Alternative gibt es auch AndroidAnnotations .

6
JJD

Ein fortgeschrittenerer Weg wäre die Verwendung von Buttermesser-Bindview. Dadurch entfällt redundanter Code.

In deinem gradle unter abhängigkeiten; fügen Sie diese 2 Zeilen hinzu.

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

Dann sync up . Beispiel für das Binden von Edittext in MainActivity 

import butterknife.BindView;   
import butterknife.ButterKnife; 

public class MainActivity {

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

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

}

Dies ist jedoch eine Alternative, wenn Sie sich wohler fühlen oder mit vielen Daten arbeiten. 

Kürzeste & einfachste-

getText(editText);

getText(button);

getText(textView);

Kleine Problemumgehung

Machen Sie einfach eine Methode in Ihrer BaseActivity/BaseActivity, wenn Sie keine haben.

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

Erweitern Sie alle Ihre Aktivitäten um diese BaseActivity.

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

Beachten Sie, dass EditText, ButtonTextView erweitert, also nur getText(TextView tv) erstellt wurde.

1
Khemraj

Versuchen Sie diesen Code

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