페이지

[안드로이드] stings 가변적으로 불러오기



  • strings.xml 경우


 strings.xml 에서 연속적인 ID 또는 일정한 패턴 이름 불러와서  텍스트 뷰에 나타낼 때, 일일이 쓰지 않고 한 문장으로 뒷자리 숫자만 바꿔서 불러올수 있다.


예를 들어, WeatherDescr_1, WeatherDescr_2, WeatherDescr_3 등등 연속적이거나 특정 값을 가질 경우


       int  id= getResources().getIdentifier("가변적 변수"+nummer, "string", getPackageName()(패키지 이름));


  • TextView ID 경우



int tempId = getResources().getIdentifier("temp" + i, "id", getPackageName());
forecast_temp = (TextView) findViewById(tempId);

activity_main.xml

  <TextView         android:id="@+id/temp0" />
  <TextView         android:id="@+id/temp1" />
불라부라..


Parameters
nameThe name of the desired resource.
defTypeOptional default resource type to find, if "type/" is not included in the name. Can be null to require an explicit type.
defPackageOptional default package to find, if "package:" is not included in the name. Can be null to require an explicit package.

Returns
  • int The associated resource identifier. Returns 0 if no such resource was found. (0 is not a valid resource ID.)
예시>

Activity_main.java

int nummer=0;

int id = getResources().getIdentifier("WeatherDescr_"+nummer, "string", "com.sample.muster");

textview.setText(id);




strings.xml

<resources>
<!-- Weather condition Icon list             -->

<string name="WeatherDescr_1">맑음</string>
<string name="WeatherDescr_2">대체로 맑음</string>
<string name="WeatherDescr_3">대체로 흐림</string>
<string name="WeatherDescr_4">흐림</string>

</resources>

cannot be resolved or is not a field 오류

종종 큰 .java 문에 코드에 이상이 없으나  다음과 같은
xxxx  cannot be resolved or is not a field 오류가 뜰 경우다

1. R.java 의 문제.
- 복사하기 버튼으로 xml 코드를 만들 경우 종종 R.java 에 반영이 되지 못한다.
- 프로젝트를 닫고 다시 불러 오거나 xml 의 id를 다시 직접 타이핑 합니다

프로젝트 명에 빨간 느낌표 오류

프로젝트 명에 빨간색 느낌 코드에는 이상이 없는 데 빨간 느낌표가
있으며 디버그가 진행되지 않는다






계속해서 아래와 같이 에러를 뿜어낸다

이럴 경우 코드내부 문제보다는  
Build Path 경로 잘못이였다. 라이브러리 경로를 변경했던가 등의 문제로 일어나 경고 였다

아래 그림과 같이 오른쪽 마우스 클릭... Build Path  선택 configure Build Path를 열어보면



아래와 같이 잘 못된 라이브러리 등을 찾을 수 있다



Edit를 눌러 경로를 수정하거나 제거하면 빨간 느낌표가 사라진다.

안드로이드 버튼에 그림, 글자 색깔 지정

안드로이드 버튼에 배경으로 그림을 넣고  텍스트 색깔 지정를 넣을 수 있다.

1. 그림 넣는 방법은 텍스트를 기준으로

android:drawableLeft="@android:drawable/ic_dialog_map" 처럼 텍스트 왼쪽에 위치

android:drawableBottom  텍스트 아래
android:drawableRight 텍스트 오른쪽
android:drawableTop 텍스트 위

2. 그림과 텍스트 간격

android:drawablePadding = "10dp"

3. 텍스트 색지정

android:textColor="#ffffff"  흰색을 의미

4. 버튼 색지정
android:background="#212121" 검은회색


5. 그림이 버튼 왼쪽으로 붙어버리는 경우
android:paddingLeft="15dp"

이와 같이 버튼 자체에 패딩을 적용하며 그림을 오른쪽으로 밀어 간격을 벌려준다.


전체 버튼 코드

 <Button
         android:id="@+id/MapButton"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:paddingLeft="15dp"
         android:layout_alignParentBottom="true"
         android:background="#212121"
         android:drawableLeft="@android:drawable/ic_dialog_map"
         android:text="@string/map_show"
         android:textColor="#ffffff" />


안드로이드 아이콘 해상도

안드로이드 아이콘 해상도 크기




아이콘을 자동으로 크기별로 만들어 주는 싸이트



폰트 변경 , 텍스트 글자 바꾸기

앱에서 버튼 텍스트 및 텍스트 글자체 변경가능하다.

네이버 등에서 글꼴을 받아야 한다. 나눔손글씨붓체 폰트를 받았다면  \assets\fonts\ 폴더에 나나눔손글씨붓체 를 저장 NanumBrush.ttf         


버튼내 글자 변경
Typeface face=Typeface.createFromAsset(getAssets(),"fonts/NanumBrush.ttf");
Ha_Button.setTypeface(face);
B_Button.setTypeface(face);
D_Button.setTypeface(face);
B_Button.setTypeface(face);
Text.setTypeface(face);



네이버 나눔 글꼴 공개 무료 글꼴

네이버 오픈 폰트 캡처














글꼴 다운 받기



ZygoteInit$MethodAndArgsCaller.run() 오류

디버깅 중  ZygoteInit$MethodAndArgsCaller 가 종종 발생한다.
대부분 오타이거나 
1. .xml 에 없거나 삭제된 버튼 및 텍스트 등 findViewById 를  java에서 불러오거나 
2. 지정되지 않는 findViewById 가 사용될 경우 발생하나

나 같은 경우는 
새로운 액티비티를 만든 후

AndroidManifest.xml 안에

        <activity
            android:name=".Activity_Homepage"
            android:configChanges="orientation|screenSize|keyboardHidden"
            android:label="@string/title_activity_activity__homepage" >
        </activity>

를 추가한다는 것을  종종 잊어버렸다


3. ZygoteInit$MethodAndArgsCaller.run() line:909 일경우

혹시 버튼 클릭에 Button1.setOnClickListener 구문을 사용하고 있다면 

액티비티에 implements OnClickListener 확장을 잊지 않았는 지 살펴본다



import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;

import android.widget.Button;

public class Activity_Main extends Activity  implements OnClickListener  {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
......
}
}

[Kotlin] 안드로이드 내부저장소 캐시에 저장하기

안드로이드 내부에 임시적으로 데이터를 저장하기 위해 캐시에 저장한다. 따로 퍼미션이 필요없고 보안이 필요없는 부분에서 잠시 저장할 때 유리하다 내부적으로 저장소가 부족할때 자동으로 지워질수 있다는 경고 private fun saveCache(d...