문제 상황
필요한 코드를 복사 붙여넣기하였는데 실행 전에 이런 오류가 발생
class "" is public, should be declared in a file named .java
이 문제는 아마 Android 초보분들께 발생하는 것이라고 생각합니다.
복잡한 코드에 놀라지마시고 천천히 확인해보시면 쉽게 해결하실 겁니다.
문제의 코드
import androidx.appcompat.app.AppCompatActivity;
public class InputFilterMinMax implements InputFilter{
private int min,max;
public InputFilterMinMax(int min, int max){
this.min = min;
this.max = max;
}
public InputFilterMinMax(String min, String max){
this.min = Integer.parseInt(min);
this.max = Integer.parseInt(max);
}
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
try {
int input = Integer.parseInt(dest.toString() + source.toString());
if (isInRange(min, max, input))
return null;
} catch (NumberFormatException nfe) { }
return "";
}
private boolean isInRange(int a, int b, int c) {
return b > a ? c >= a && c <= b : c >= b && c <= a;
}
}
public class MainActivity extends AppCompatActivity {
EditText EditText_et;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText_et = findViewById(R.id.EditText_et);
EditText_et.setFilters(new InputFilter[]{new InputFilterMinMax("1","12")});
}
}
원인
안드로이드에서 public이 하나여야 하기 때문이라고 함.
해결방안
빨간 부분의 코드를 파란 부분으로 복사 붙여넣기 해주기
결과 코드
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
public class InputFilterMinMax implements InputFilter{
private int min,max;
public InputFilterMinMax(int min, int max){
this.min = min;
this.max = max;
}
public InputFilterMinMax(String min, String max){
this.min = Integer.parseInt(min);
this.max = Integer.parseInt(max);
}
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
try {
int input = Integer.parseInt(dest.toString() + source.toString());
if (isInRange(min, max, input))
return null;
} catch (NumberFormatException nfe) { }
return "";
}
private boolean isInRange(int a, int b, int c) {
return b > a ? c >= a && c <= b : c >= b && c <= a;
}
}
EditText EditText_et;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText_et = findViewById(R.id.EditText_et);
EditText_et.setFilters(new InputFilter[]{new InputFilterMinMax("1","12")});
}
해결 완료
'프로그래밍 언어 > Java' 카테고리의 다른 글
Android TextInputEditText hint color 변경하는 방법 (0) | 2021.10.28 |
---|---|
java.lang.NumberFormatException: empty String 에러 해결 (0) | 2021.10.26 |
How to make Android button circle (안드로이드 원형 버튼 구현 방법) (0) | 2021.10.24 |
Android java edittext null 값일 때 activity 진행 일시정지 하는 방법 (0) | 2021.10.23 |
Android java 버튼 누르면 색 유지 하는 코드 설명(maintain color change state of button after click) (0) | 2021.10.22 |