获取编辑文本字段的值

我正在学习如何创建UI元素。我已经创建了一些EditText输入字段。在单击按钮时,我想捕获输入字段中的内容。

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

那是我的领域。如何获取内容?

798886 次浏览

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

我猜你在调用EditText对象“mEdit”时必须使用这段代码:

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

只要确保编译器知道要调用和使用哪个EditText

我希望这个方法能奏效:

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

我尝试了Integer.getInteger()方法而不是valueOf() -它没有工作。

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

你可能还想看看黄油刀。它旨在通过使用注释来减少样板代码的数量。这里有一个简单的例子:

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

从android中的EditText控件获取值。EditText getText属性用于获取EditText的值:

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

一种更高级的方法是使用butterknife bindview。这消除了冗余代码。

在gradle的依赖项下;把这两行加起来。

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

然后同步。 在MainActivity中绑定编辑文本

import butterknife.BindView;
import butterknife.ButterKnife;


public class MainActivity {


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


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


}

但是,当您感觉更舒服或开始处理大量数据时,这是一种替代方案。

试试这段代码

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

最短,简单的

getText(editText);

getText(button);

getText(textView);

一些解决方法

只要在你的BaseActivity中创建方法,如果你没有的话。

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

并通过这个BaseActivity扩展你的所有活动。

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

注意,EditTextButton扩展了TextView,所以我只创建了getText(TextView tv)

步骤1:创建名称为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>

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

字符串值= YourEditText.getText().toString;

如果你正在使用Kotlin,并且想让它通用,你可以使用扩展函数

扩展功能:

fun EditText.getTextString(): String {
this.text.toString()
}

并直接从EditText中调用此方法

yourEditText.getTextString()