Android 获取编辑文本字段的值
我正在学习如何创建UI元素。我已经创建了几个EditText输入字段。点击一个按钮,我想捕获输入字段中键入的内容Android 获取编辑文本字段的值,android,android-edittext,Android,Android Edittext,我正在学习如何创建UI元素。我已经创建了几个EditText输入字段。点击一个按钮,我想捕获输入字段中键入的内容 <EditText android:id="@+id/name" android:width="220px" /> 那是我的领域。如何获取内容?使用getText(): 我想在调用EditText对象的“mEdit”时,您必须使用以下代码: myActivity.this.mEdit.getText().toString() 只需确保编译器知道调用和使用哪个Edit
<EditText android:id="@+id/name" android:width="220px" />
那是我的领域。如何获取内容?使用getText():
我想在调用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());
}
});
}
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
:
编译'com.jakewharton:butterknife:x.y.z'
另一种选择是。从android中的
EditText
控件获取值EditText
getText属性用于获取值EditText
:
EditText txtname = findViewById(R.id.name);
String name = txtname.getText().toString();
更高级的方法是使用butterknife bindview。这消除了冗余代码 在你的梯度下依赖;添加这两行
compile('com.jakewharton:butterknife:8.5.1') {
exclude module: 'support-compat'
}
apt 'com.jakewharton:butterknife-compiler:8.5.1'
然后同步。
MainActivity中绑定edittext的示例
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(按钮)代码>
getText(textView)代码>
小变通办法
如果没有,只需在BaseActivity中创建方法/创建BaseActivity
public class BaseActivity extends AppCompatActivity{
public String getText(TextView tv) {
return tv.getText().toString().trim();
}
}
并通过此基本活动扩展您的所有活动
public class YourActivity extends BaseActivity {
@Override
public void onCreate(Bundle savedInstanceState){
getText(editText);
getText(button);
getText(textView);
}
}
请注意,
EditText
,按钮扩展了TextView
,因此我只创建了getText(TextView tv)
,步骤1:创建名为activity\u 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>
字符串值=YourEditText.getText().toString 如果您正在使用Kotlin并希望使其成为通用的,则可以使用扩展函数
扩展功能:
fun EditText.getTextString(): String {
this.text.toString()
}
并直接从EditText调用此方法
yourEditText.getTextString()
upvots的数量多少证明了重写toString
不会产生最易发现的API,无论技术多么花哨。你评论中的语法和情感真的很难理解…@vemv API的问题是返回一个可编辑的对象,用户期望并且需要一个简单的字符串99%的时间。我认为安卓很酷,但我很惊讶我不得不为此用谷歌搜索(以及如何检测值何时已更改并准备好读取,这可能很复杂)。我认为他们让这变得比必要的更难了!如果你不将EditText放在clas范围内,而是在OnCreate中声明它,它希望它被声明为final。我认为最好不要将它声明为final,但这是唯一的方法,使它在类范围内吗?使它在类范围内是最好的方法吗?@PFranchise你怎么办您指的是“类范围”?包保护(如示例中所示)?Private?你为什么不想让整个班级都能访问一个小部件?不是请求更多信息或建议。也不是感谢或+1。这太糟糕了!为什么有人会认为这是设计文本框的正确方法。而且,EditText是他们能找到的最不直观的名称。这是假设值是整数…而不是s你应该加上解释“mEdit”是从哪里来的。这是最简单最完整的答案。
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);
}
});
}
}
fun EditText.getTextString(): String {
this.text.toString()
}
yourEditText.getTextString()