480 Stimmen

Wert eines Feldes "Text bearbeiten" abrufen

Ich lerne gerade, wie man UI-Elemente erstellt. Ich habe ein paar EditText-Eingabefelder erstellt. Wenn ich auf eine Schaltfläche klicke, möchte ich den in dieses Eingabefeld eingegebenen Inhalt erfassen.

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

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

7voto

JJD Punkte 47071

Sie können auch einen Blick werfen auf Buttermesser . Es zielt darauf ab, die Menge an "Boilerplate"-Code durch die Verwendung von Annotationen 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 einfach die folgende Abhängigkeit zu Ihrem build.gradle :

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

Als Alternative gibt es auch AndroidAnmerkungen .

5voto

Khemraj Sharma Punkte 52006

Kürzeste und einfachste

getText(editText);

getText(button);

getText(textView);

Kleine Abhilfe

Machen Sie einfach Methode in Ihrer BaseActivity / erstellen Sie BaseActivity, wenn Sie nicht haben.

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

Und 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 , Button erweitert TextView also habe ich nur getText(TextView tv) .

4voto

Malik Ali Punkte 165

String value = YourEditText.getText().toString;

2voto

Eine fortschrittlichere Methode wäre die Verwendung von Butterknife Bindview. Dies eliminiert redundanten Code.

In Ihrem 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 synchronisieren Sie. Beispiel für die Bindung 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, sobald Sie sich wohler fühlen oder anfangen, mit vielen Daten zu arbeiten.

2voto

Tienanhvn Punkte 141

Schritt 1: Layout mit dem Namen activity_main.xml erstellen

<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>

Schritt 2 : Klasse Main.class erstellen

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X