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

stringxml. 질문드립니다.

0 추천

 

안녕하세요

 

일반 C언어  PRINTF문처럼 구현할려고 string.xml에 텍스트뷰를 추가하고

 

java문에 그 값을 넣었는데 값은 나타나지 않고 stringxml의 내용만 표시하네요,'

 

무엇이 잘못되엇는지 도저히 모르겠습니다. ㅠㅠ

 

stringxml도 manifest문에 사용권한을 줘야 하나요?

 

아래에는 stringxml. 및 java소스 올립니다 도와주세요 ㅠㅠ 

 

 

<stringxml 부분>

    <string name="text">적립된 포인트는  %1$d입니다</string>
    <string name="accrue">누적된  포인트는 %1$d 있습니다.</string>
    <string name="use">사용가능 포인트는 %1$d 입니다</string>

 

<java 소스>

        Resources res = getResources();
        String text = String.format(res.getString(R.string.text),1);
        String accrue = String.format(res.getString(R.string.accrue),1);
        String use = String.format(res.getString(R.string.use),1);

 

여기서 문제가 또 있는데 한 레이아웃에 세개의 텍스트뷰를 쓰니까 오류가 나네요,

하나만 사용할때는 이상없는데 밑에처럼 세개쓰니까 앱이 종료되네요.

 

이문제점은 무엇일까요?

 

<layout 부분>

 

<TextView
            android:id="@+id/get"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="68dp"
            android:text="@string/text"
            android:textSize="20sp" />

        <TextView
            android:id="@+id/accrue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="70dp"
            android:text="@string/accrue"
            android:textSize="20sp" />

        <TextView
            android:id="@+id/use"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="76dp"
            android:text="@string/use"
            android:textSize="20sp" />

 

매번 질문해서 죄송합니다.

 

 

 

김희구 (440 포인트) 님이 2014년 7월 30일 질문

4개의 답변

+1 추천
 
채택된 답변

 android:text="@string/text" 으로 되어 있으니 그렇습니다.

아래를 추가하세요

TextView tv = (TextView) findViewById(R.id.get);

tv.setText(String.format(getResources().getString(R.string.text), 1));

 

aucd29 (218,390 포인트) 님이 2014년 7월 30일 답변
김희구님이 2014년 7월 30일 채택됨
감사합니다 많은 도움 되었습니다.
+1 추천
그렇게 바로 인자로 집어넣지 마시고,
String tmpStr1 = res.getString(R.string.text);
log.d("tag", "tmpStr1 = " + tmpStr1);
이런식으로 로그로 확인해보세요..
 
String.format 은 C랑 문법이 유사합니다.
String.format("text = %s", "hi yo!");    // 생성되는 문자열: text = hi yo!
Gioskhan (12,060 포인트) 님이 2014년 7월 30일 답변
감사합니다 많은 도움 되었습니다.
+1 추천
저렇게 되는 이유는 String.format의 인자 값이 필요한테 xml상에서 그냥 넣어 버리면 인자값이 없어서 그렇습니다.

해결책은 aucd29님이나 Gioskhan 님이 알려 주신대로 적용 하시면 됩니다.
q1212 (26,020 포인트) 님이 2014년 7월 30일 답변
+1 추천

 String text = res.getString(R.string.text,1);

------ OR ----

<string name="text" formatted="false">적립된 포인트는  %1$d입니다</string>

익명사용자 님이 2014년 7월 30일 답변
...