아핫뉴스실시간 인기검색어
아핫뉴스 화산 이미지
아하

생활

생활꿀팁

깔끔한참밀드리201
깔끔한참밀드리201

이 코드의 StackOverflow의 해결방법이 뭔가요?

public class MainActivity extends AppCompatActivity { public EditText editText; public Button button; public LinearLayout linearLayout; public LinearLayout lll; public Button getBtn; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = findViewById(R.id.editText); button = findViewById(R.id.btn); linearLayout = findViewById(R.id.linerLayout); getBtn = findViewById(R.id.getText); getBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { editText.getText(); String string = editText.getText().toString(); int n = Integer.parseInt(string); for(int i=0; i<n; i++){ onClick(button); } button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = (View)inflater.inflate(R.layout.activity_inflate, null); lll = view.findViewById(R.id.LLL); linearLayout.addView(view); } }); } }); } }

E/AndroidRuntime: FATAL EXCEPTION: main

Process: com.example., PID: 32382

java.lang.StackOverflowError: stack size 8MB

at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1306)

at android.text.SpannableStringBuilder.getChars(SpannableStringBuilder.java:1191)

at android.text.SpannableStringBuilder.toString(SpannableStringBuilder.java:1213)

at com.example.ceell.testing.MainActivity$1.onClick(MainActivity.java:40)

at com.example.ceell.testing.MainActivity$1.onClick(MainActivity.java:44)

at com.example.ceell.testing.MainActivity$1.onClick(MainActivity.java:44)

at com.example.ceell.testing.MainActivity$1.onClick(MainActivity.java:44)

at com.example.ceell.testing.MainActivity$1.onClick(MainActivity.java:44)

at com.example.ceell.testing.MainActivity$1.onClick(MainActivity.java:44)

at com.example.ceell.testing.MainActivity$1.onClick(MainActivity.java:44)

at com.example.ceell.testing.MainActivity$1.onClick(MainActivity.java:44)

에러는 이렇게 뜹니다ㅠㅠ

for문이 무한루프를 도는 것 같은데 무엇이 문제인지 모르겠습니다

    55글자 더 채워주세요.
    2개의 답변이 있어요!
    • 현명한참밀드리172
      현명한참밀드리172

      안녕하세요.

      흠 코드가 이상합니다. 로직 자체는 이해가 되지만 왜 이렇게 짰는지는 의문이군요. 일단 에러에 대해서만 말씀드리면 처음 버튼 클릭 받고 for안에서 다시 자기 자신의 onclick을 불렀기 때문에 무한 재귀가 발생합니다.

      For문안의 onclick을 제거하거나 재귀를 안하도록 바꿔주시면 됩니다.

    • getBtn에서 setOnClickListener를 하실 때 button.setOnClickListener를 계속해서 호출하고 계시네요.

      스코프를 for문 뒤에 하나 더 설정해보세요.

      사실 지금처럼 코드를 구성하면 퍼포먼스적으로나 추후 관리 차원에서도 좋지 않습니다.