获取编辑文本字段的值
Posted
技术标签:
【中文标题】获取编辑文本字段的值【英文标题】:Get Value of a Edit Text field 【发布时间】:2011-05-30 16:55:27 【问题描述】:我正在学习如何创建 UI 元素。我创建了一些 EditText 输入字段。单击按钮时,我想捕获输入到该输入字段中的内容。
<EditText android:id="@+id/name" android: />
那是我的领域。如何获取内容?
【问题讨论】:
投票的数量在一定程度上证明了覆盖toString
并不会产生最容易发现的 API,但是这项技术很花哨。
你评论中的语法和情绪真的很难理解......
@vemv API 的问题是返回一个Editable
对象,用户期望并且需要一个简单的String
99% 的时间。
我认为 Android 很酷,但我很惊讶我不得不为此使用 Google(以及如何检测值何时发生变化并准备好读出,这可能很复杂)。我认为他们让这变得比必要的更难!
【参考方案1】:
通过使用 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 放在类范围的范围内,而是在 OnCreate 中声明它,它希望它被声明为 final。我认为最好不要让它成为最终的,但这样做是唯一的方法,让它成为全班的吗?是否将其作为全班范围的最佳解决方案? @PFranchise “全班”是什么意思?包受保护(如示例中所示)?私人的?你为什么不想让整个班级都可以访问一个小部件?我猜您在调用 EditText 对象的“mEdit”时必须使用此代码:
myActivity.this.mEdit.getText().toString()
只需确保编译器知道要调用和使用哪个EditText
。
【讨论】:
你应该添加解释“mEdit”来自哪里。【参考方案3】:从 android 中的 EditText
控件中获取值。 EditText
getText
属性用于获取 EditText
的值:
EditText txtname = findViewById(R.id.name);
String name = txtname.getText().toString();
【讨论】:
【参考方案4】:我希望这个可以工作:
Integer.valueOf(mEdit.getText().toString());
我尝试了Integer.getInteger()
方法而不是valueOf()
- 它没有用。
【讨论】:
这是假设值是一个整数......不确定你在问题中的哪个位置。【参考方案5】: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());
);
【讨论】:
【参考方案6】:您可能还想看看Butter Knife。它旨在通过使用注释来减少样板代码的数量。这是一个简单的例子:
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。
【讨论】:
【参考方案7】:最短和最简单
getText(editText);
getText(button);
getText(textView);
小解决方法
只需在您的 BaseActivity 中创建方法/如果没有,请创建 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);
注意EditText
、Button
扩展了TextView
,所以我只创建了getText(TextView tv)
。
【讨论】:
【参考方案8】:字符串值 = YourEditText.getText().toString;
【讨论】:
【参考方案9】:更高级的方法是使用butterknife bindview。这消除了冗余代码。
在你的gradle下的dependencies;添加这 2 行。
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);
...
但是,当您感觉更舒服或开始处理大量数据时,这是另一种选择。
【讨论】:
【参考方案10】:第 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_
android:layout_
android:padding="10dp"
tools:context=".MainActivity"
android:background="#c6cabd"
>
<TextView
android:id="@+id/tv"
android:layout_
android:layout_
android:textSize="17dp"
android:textColor="#ff0e13"
/>
<EditText
android:id="@+id/et"
android:layout_
android:layout_
android:layout_below="@id/tv"
android:hint="Input your country"
/>
<Button
android:id="@+id/btn"
android:layout_
android:layout_
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);
);
【讨论】:
【参考方案11】:如果您使用 Kotlin 并希望使其通用,您可以使用扩展功能
扩展功能:
fun EditText.getTextString(): String
this.text.toString()
并直接从您的 EditText 调用此方法
yourEditText.getTextString()
【讨论】:
【参考方案12】:试试这个代码
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();
);
【讨论】:
【参考方案13】: 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();
);
【讨论】:
以上是关于获取编辑文本字段的值的主要内容,如果未能解决你的问题,请参考以下文章
如何快速从 UITableViewCell 动态中获取文本字段的值?