마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

문자열 \n사용법 관련

0 추천
 

textView에 setText할때 " \n \n "값을 집어 넣고 싶은데 어떻게 해야할까요.

 

 

split = allText.split("\n");

이런 식으로 allText를 나눴습니다. allText는

allText = textView.getText().toString();

으로 초기화 하였구요

android:text=" \n \n "

각 텍스트뷰는 다음과 같은 내용이 들어가 있고

EntryFragment에서 Bundle 값을 받아 onActivityCreated()에서 setting 함수를 통해 setText됩니다.

(split[0] +"\n"+ split[1] +"\n"+ split[2]  이런식으로)

그래서 Bundle 값으로 세개다 받아서 

이런식으로 들어갑니다.

그런데 만약 

위와 같이 두개의 값을 " "으로 받으면 문제가 생깁니다.

builder.setPositiveButton("수정", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        split = allText.split("\n");
        Log.d(TAG,"split[0] : "+split[0]+"split[1] : "+split[1]+"split[2] : "+split[2]);
        int _id = dbHelper.finditem(date, selectTime);
        int selectColor = dbHelper.getColor(_id);
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(R.id.fragment, EntryFragment.newInstance(_id,date,split[0],split[1],split[2],selectColor));
        fragmentTransaction.commit();
    }
});

여기서 문제가 생기는데

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.administrator.myscheduler2, PID: 13935
    java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
        at com.example.administrator.myscheduler2.ScheduleFragment$2.onClick(ScheduleFragment.java:1023)
        at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6541)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

다음과 같은 에러메세지가 뜹니다.

 

 

익명사용자 님이 2018년 11월 2일 질문
2018년 11월 2일 수정

1개의 답변

0 추천
split 변수의 length가 1개일 때, 2개일 때, 3개일 때를 먼저 판단하세요.
쎄미 (162,410 포인트) 님이 2018년 11월 2일 답변
무슨말인지 모르겠습니다.
split.length를 찍어보시고, 갯수에 따라 줄바꿈을 하나 넣을 지, 두 개 넣을지를 결정하시면 됩니다.
줄바꿈은 두개 들어가서 length가 3가 되어야 합니다. 그런데 본문에서는 length 가 1로 원하는 대로인 "a\n \n "로 split[0] = "a", split[1] = " ", split[2] = " "가 아닌
"a" split[0]="a"가 됩니다.
String[] split = "a\n \n ".split("\n");
    Log.i("###", "" + split.length);
    for (String s : split) {
      Log.i("###", s);
    }
이렇게 해도 갯수는 3개라고 잘 나옵니다.
...