【问题标题】:Get Value of a Edit Text field获取编辑文本字段的值
【发布时间】:2011-05-30 16:55:27
【问题描述】:

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

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

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

【问题讨论】:

  • 投票的数量在一定程度上证明了覆盖 toString 并不会产生最容易发现的 API,但是这项技术很花哨。
  • 你评论中的语法和情绪真的很难理解......
  • @vemv API 的问题是返回一个Editable 对象,用户期望并且需要一个简单的String 99% 的时间。
  • 我认为 Android 很酷,但我很惊讶我不得不为此使用 Google(以及如何检测值何时发生变化并准备好读出,这可能很复杂)。我认为他们让这变得比必要的更难!

标签: android android-edittext


【解决方案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 “全班”是什么意思?包受保护(如示例中所示)?私人的?你为什么不想让整个班级都可以访问一个小部件?
  • 不是要求提供更多信息或建议。也不是感谢或+1。这真糟糕!为什么有人会认为这是设计文本框的正确方法。此外,EditText 是他们能找到的最不直观的名称。
【解决方案2】:

我猜您在调用 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_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);
                          }
                      });
               }
              }
              

              【讨论】:

                【解决方案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();
                            }
                        });
                    

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2011-06-19
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多