【AndroidStudio】EditText 에 등록하는 값에 제한을 마련하고 싶다【Java】
16363 단어 if 문AndroidStudio자바
소개
이미지 3장은 내가 만든 혈압을 메모하는 앱입니다.
EditText에 입력한 값을 데이터베이스에 저장합니다.
그 때, 범위외의 값이나 null 를 피하고 싶었으므로 여러가지 조사해, if문과 논리 연산자로 썼습니다.
그건 그렇고,이 코드라면 연속으로 데이터를 등록하려고하면 앱이 떨어집니다.
연속 등록 떨어짐에 대한 기사는 여기 (내가 쓴 다른 기사로 날아갑니다) .
샘플 코드
마이너 c 치비 ty. 자바
DatePicker와 TimePicker, 사용자 지정 글꼴 코드는 생략되었습니다.
DatePicker, TimePicker 도입에서 참고로 한 블로그 .
커스텀 폰트의 기사는 이쪽(내가 쓴 다른 기사로 날아갑니다) .
if 문은 onClick 메서드에 씁니다.
(코드를 올려 놓고 말하는 것도 있습니다만, insertData 메소드는 불안정한 코드이므로 똑같이 그대로 사용하는 것은 삼가해 주세요)
MainActivity.java
public class MainActivity extends AppCompatActivity {
EditText getMaxBP;
EditText getMinBP;
EditText getPulse;
Button btEntry;
Button btNext;
DatabaseHelper helper;
SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
helper = new DatabaseHelper(MainActivity.this);
db = helper.getWritableDatabase();
btEntry = findViewById(R.id.btEntry);
btEntry.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getMaxBP = findViewById(R.id.etUpperBloodPressure);
String maxBP = (getMaxBP.getText().toString());
getMinBP = findViewById(R.id.etLowerBloodPressure);
String minBP = (getMinBP.getText().toString());
getPulse = findViewById(R.id.etPulse);
String pulse = (getPulse.getText().toString());
String nullMsg = "値を入力してください";
if(maxBP.length()==0){
getMaxBP.setError(nullMsg);
return;
} else if(minBP.length()==0){
getMinBP.setError(nullMsg);
return;
} else if(pulse.length()==0){
getPulse.setError(nullMsg);
return;
}
String errorMsg = "この値は入力できません";
if(!(80 <= Integer.parseInt(maxBP) && Integer.parseInt(maxBP) <= 180)){
getMaxBP.setError(errorMsg);
return;
} else if(!(50 <= Integer.parseInt(minBP) && Integer.parseInt(minBP) <= 140)){
getMinBP.setError(errorMsg);
return;
} else if(!(40 <= Integer.parseInt(pulse) && Integer.parseInt(pulse) <= 120)){
getPulse.setError(errorMsg);
return;
}
// データベースに値を登録するメソッド
insertData(db, maxBP, minBP, pulse);
// 登録に成功したらトーストがでる
Toast toast = Toast.makeText(BloodPressureAdditionActivity.this, "登録しました", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
}
});
btNext = findViewById(R.id.btNext);
btNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, SubActivity.class);
startActivity(intent);
}
});
}
public void insertData(SQLiteDatabase db, String maxBP, String minBP, String pulse){
ContentValues values = new ContentValues();
try {
values.put("_maxBP", maxBP);
values.put("_minBP", minBP);
values.put("_pulse", pulse);
db.insert("_BPtable", null, values);
} finally {
db.close();
}
}
insertDate 메소드의 설명입니다만,
_maxBP,_minBP,_pulse 라는 열에 인수의 값을 건네주어 insert 메소드로 table(여기에서는 _BPtable) 에 등록하고 있습니다.
ContentValues 클래스에 대한 설명은 이 사이트를 이해하기 쉽습니다.
Let's 프로그래밍 키와 값 추가
insert와 close는 SQLiteDatabase 메서드입니다.
개발자: SQLiteDatabase 클래스
setError
setError 를 사용하면 자동적으로 이미지와 같은 빨간 빅 리마크와 흑백 문자 문자의 스타일이 출력됩니다.
두 개의 if 문을 썼지만,
첫 번째는 null
두 번째는 범위 밖 입력
에 각각 대응하고 있습니다.
도움이되면 다행입니다.
Reference
이 문제에 관하여(【AndroidStudio】EditText 에 등록하는 값에 제한을 마련하고 싶다【Java】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yuyuyuki555/items/7f71e2a039b8ddfcb4f5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)