텍스트 편집 필드의 값 얻기


439

UI 요소를 만드는 방법을 배우고 있습니다. EditText 입력 필드를 몇 개 만들었습니다. 버튼을 클릭하면 해당 입력 필드에 입력 된 내용을 캡처하고 싶습니다.

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

그게 내 분야 야 내용은 어떻게 구할 수 있습니까?


21
업 보트의 양은 재정의 toString가 가장 발견 가능한 API를 생성하지는 않지만 다소 공상은 기술 임을 입증합니다 .
vemv

29
귀하의 코멘트의 문법과 감정이 이해하기 정말 어렵다 ...
IcedDante

7
@vemv API의 문제는 Editable사용자가 String99 %의 시간을 기대하고 필요 로하는 객체를 반환하는 것 입니다.
Amir Ali Akbari

나는 안드로이드가 멋지다고 생각하지만, 나는 이것을 위해 (그리고 값이 언제 변경되고 읽을 준비가되었는지 감지하는 방법에 대해 Google에 놀랐다. 나는 그들이 필요 이상으로 이것을 어렵게 만들었다 고 생각한다!
nsandersen 2016 년

답변:


685

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

7
클래스 전체 범위에 EditText를 배치하지 않고 대신 OnCreate에서 선언하면 최종 텍스트로 선언됩니다. 나는 그것을 최종적으로 만들지 않는 것이 낫다고 생각하지만, 그것을 클래스 전체로 만드는 유일한 방법입니까? 이것을 학급 전체에서 가장 좋은 방법으로 만들고 있습니까?
PFranchise

1
@PFranchise "클래스 전체"란 무엇을 의미합니까? 패키지 보호 (예와 같이)? 은밀한? 전체 클래스에서 위젯에 액세스 할 수없는 이유는 무엇입니까?
Zelphir Kaltstahl

3
<rant> 자세한 정보 나 제안에 대한 요청이 아닙니다. 또한 감사 또는 +1이 아닙니다. 이것은 끔찍하다! 왜 이것이 텍스트 상자를 디자인하는 올바른 방법이라고 생각하겠습니까? 또한 EditText는 찾을 수있는 가장 직관적 인 이름입니다. </ rant>
Roy Falk

22

EditText 객체 "mEdit"을 호출 할 때이 코드를 사용해야한다고 생각합니다.

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

컴파일러 EditText가 호출하고 사용할 것을 알고 있는지 확인하십시오 .


7
"mEdit"의 출처를 설명을 추가해야합니다.
null

18

EditText안드로이드 의 컨트롤에서 가치를 얻으십시오 . EditText getText가치를 얻기 위해 속성 사용 EditText:

EditText txtname = findViewById(R.id.name);
String name      =  txtname.getText().toString();

11

나는 이것이 작동하기를 바랍니다.

Integer.valueOf(mEdit.getText().toString());

Integer.getInteger()대신 방법을 시도했지만 valueOf()작동하지 않았습니다.


9
이것은 값이 정수라고 가정하고 질문에서 어디에서 선택했는지 확실하지 않습니다.
Joshua Pinter

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

7

버터 나이프를 살펴볼 수도 있습니다 . 주석을 사용하여 상용구 코드의 양을 줄이는 것을 목표로합니다. 다음은 간단한 예입니다.

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도 있습니다.


5

가장 짧고 간단한

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확장 TextViewI 만 만들어 있도록 getText(TextView tv).


2

보다 고급적인 방법은 버터 나이프 바인드 뷰를 사용하는 것입니다. 이것은 중복 코드를 제거합니다.

의존성에 따라 gradle에서; 이 두 줄을 추가하십시오.

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); 
         ...
   }

}

그러나 더 편안하거나 많은 데이터로 작업하기 시작하면 대안입니다.


1

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);
            }
        });
 }
}


0

이 코드를 사용해보십시오

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

-8
    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();
        }
    });
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.