私はUI要素を作成する方法を学んでいます。いくつかのEditText入力フィールドを作成しました。ボタンをクリックすると、その入力フィールドに入力されたコンテンツをキャプチャします。
<EditText Android:id="@+id/name" Android:width="220px" />
それが私の分野です。コンテンツを入手するにはどうすればいいですか。
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オブジェクトの "mEdit"を呼び出すときには、このコードを使用する必要があります。
myActivity.this.mEdit.getText().toString()
どのEditText
を呼び出して使用するかをコンパイラが認識していることを確認してください。
AndroidのEditText
コントロールから値を取得します。 EditText
getText
プロパティは、値をEditText
にするために使用します。
EditText txtname = (EditText)findViewById(R.id.name);
String name = txtname.getText().toString();
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());
}
});
}
私はこれがうまくいくことを願っています:
Integer.valueOf(mEdit.getText().toString());
Integer.getInteger()
ではなくvalueOf()
メソッドを試しました - うまくいきませんでした。
バターナイフ もご覧になるとよいでしょう。注釈を使用して定型コードの量を減らすことを目的としています。これは簡単な例です:
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 もあります。
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)
のみを作成したことに注意してください。
より高度な方法は、butterknife bindviewを使うことです。これにより、冗長なコードが排除されます。
依存関係の下であなたのgradleに。この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);
...
}
}
しかし、これは、あなたがより快適に感じるか、大量のデータを扱うようになったときの代替方法です。
このコードを試す
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();
}
});