获取"编辑文本"字段的值

Har*_*M V 424 android android-edittext

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

<EditText android:id="@+id/name" android:width="220px" />
Run Code Online (Sandbox Code Playgroud)

那是我的领域.我怎样才能获得内容?

svd*_*ree 664

通过使用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());
            }
        });
}
Run Code Online (Sandbox Code Playgroud)

  • 如果不将EditText放在clas范围的范围内,而是在OnCreate中声明它,则希望将其声明为final.我认为最好不要让它成为最终,但这是唯一的方法,使它成为全班级?在整个课堂上,这是最好的解决方法吗? (7认同)
  • &lt;rant&gt;不要求提供更多信息或建议。也不是谢谢或+1。这很糟糕!为什么有人会认为这是设计文本框的正确方法。另外,EditText是他们找不到的最不直观的名称。&lt;/ rant&gt; (2认同)

小智 21

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

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

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

  • 你应该添加解释"mEdit"的来源. (7认同)

Cha*_*mar 17

EditTextandroid中的控件获取价值.EditText getText物业用来获得价值EditText:

EditText txtname = findViewById(R.id.name);
String name      =  txtname.getText().toString();
Run Code Online (Sandbox Code Playgroud)


小智 11

我希望这个应该有效:

Integer.valueOf(mEdit.getText().toString());
Run Code Online (Sandbox Code Playgroud)

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

  • 这假设值是一个整数...不确定你在问题中选择了哪一个. (8认同)

小智 9

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());
            }
        });
}
Run Code Online (Sandbox Code Playgroud)


JJD*_*JJD 7

您可能还想看看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();
    }
}
Run Code Online (Sandbox Code Playgroud)

只需将以下依赖项添加到您的build.gradle:

compile 'com.jakewharton:butterknife:x.y.z'
Run Code Online (Sandbox Code Playgroud)

作为替代方案,还有AndroidAnnotations.


Khe*_*raj 5

最短最简单

getText(editText);

getText(button);

getText(textView);

小解决方法

如果没有,只需在BaseActivity中创建方法/创建BaseActivity。

public class BaseActivity extends AppCompatActivity{
    public String getText(TextView tv) {
        return tv.getText().toString().trim();
    } 
}
Run Code Online (Sandbox Code Playgroud)

并通过此BaseActivity扩展您的所有活动。

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

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