Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 获取编辑文本字段的值_Android_Android Edittext - Fatal编程技术网

Android 获取编辑文本字段的值

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

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

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