지금 약 안드로이드 공부를 3주 가량 하고있는데 가장 짜증났던 부분이 바로 코딩할 때 이클립스의 자동완성기능(?) 때문에 이클립스가 먹통이 되는 문제가 자주 발생 한다는 것이었다. 

- 자동 완성기능(?)이란 아래 화면처럼 코딩할 때 자동으로 코딩 목록을 선택하게 해 주는것이다.
 

 제일 많이 기다렸던 경우가 위처럼 .set~~ 이쪽 메소드를 사용 할 때 였던 것 같다.

 



 솔직히 Android의 역사가 짧기 때문에 어쩔 수 없는 문제인가 싶어 한번도 해결할 생각을 하지 않았었다. 하지만 우연찮게 이클립스의 최신판(INDIGO)에 대한 정보를 찾아보다가 Code Assist 에 대한 버그수정가 수정되었다는 정보를 입수 하였고,이 문제가 다름아닌 이클립스의 버그 였 다는것을 알게되었다.

 현재 가장 많은 유저들이 사용하고있는 Helios(2010년) 버전에서 발생한 버그로 단순한 Plugin패치 만으로 해결이 가능했다.



플러그인은 이클립스를 통해서 받을 수 도 있다고 하는데 그냥 편하게 아래에 파일을 첨부 하였다.


 위의 .jar 파일을 다운로드 받아 아래처럼 이클립스가 설치된 경로의 Plugins 폴더에 덮어 쓰자. (기존에 있는 jar파일에서 버그가 발생 했던 것이다.)

 

 이제 잘 될 것이다. 


ps. 위의 문제는 eclipse 2010년버전인 Helios에서만 해당되는 버그/수정 방법입니다. 이전 버전인 Galileo(2009) 나 가장 최신버전(2011)인 Indigo에서는 문제가 없다고 합니다.
 

'Programming > ANDROID' 카테고리의 다른 글

android/resource (리소스) 에 대해서...  (2) 2011.04.11
INSTALL_FAILED_INSUFFICIENT_STORAGE  (2) 2011.04.11
setContentView 에 대한 고찰..  (6) 2011.03.30
Layout 중첩 - Multi Page  (6) 2011.03.29
ViewGroup - RelativeLayout  (2) 2011.03.29

StarUML이란??

  - 프로젝트를 구상할 때 사용하는 프로그램으로 실무에서 많이들 사용한다고 한다. 



1. 클래스 생성

 1) Attribute :

   - '+' 는 public, '-'는 private.  

   - 속성의 자료형은 직접 입력 가능, 

   - Owner scope에서는  스태틱변수와 맴버 변수 설정을 할 수 있다.

   - Changeability : frozen 으로 상수를 만들 수 있다.

   - initial Value 로 초기값 설정 가능

 2) Method :

   - 파리미터들을 등록하고 리턴타입은 설정의 DirectionKind를 Return으로 설정

  

 3) ex

 

2. 관계

 1) 상속 : generalization 화살표를 하위메뉴에서 상위메뉴로 드레그한다.

  - composition 관계 : 필수관계

  - Aggregation 관계 : Option 관계

 



 

 2) 참조관계

  - Association : 서로 참조

  - DirectedAssociation : 방향성이 있는 참조방식. 참조 당하는 쪽에서 참조하는 쪽.

 

 3) 종속 관계

 

 

 

 4) Interface

Realiation 화살표로 구현. 

'Programming > BASIC' 카테고리의 다른 글

SOAP vs REST 비교  (0) 2013.08.06
이클립스(eclipse) 한글 설정  (2) 2011.04.04
JSP와 JAVASCRIPT 차이  (0) 2011.03.24
이클립스 웹 환경 설정  (3) 2011.03.24
이클립스(eclipse) 첫 실행 후 설정  (2) 2011.03.24
Preferences 에 Text file edcoding을 UTF-8로 사용하다가 글씨가 이상하게 잘 깨져서
다시 MS949로 설정했는데, 뭐지.
이제는 Scanner에서 한글이 깨지네..

아놔., 그래서 다시 UTF-8로 바꾸고 사용중인데, 계속 Scanner만 쓰면 한글이 오류.
그래서 이것 저것 다 찾아보다가 이클립스의 환경설정파일을 수정하면 된다길래 해보니 된다.

하는방법.

이클립스 설치폴더에 eclipse.ini 파일을 열어 (그냥 메모장으로 열면 글씨가 깨질 수 있으니 에딧플러스 추천)

맨 밑줄에
-Dfile.encoding=UTF-8
을 추가 한 후에 이클립스를 시작! 한글이 된다.

이상!

'Programming > BASIC' 카테고리의 다른 글

SOAP vs REST 비교  (0) 2013.08.06
StarUML 사용방법  (3) 2011.04.05
JSP와 JAVASCRIPT 차이  (0) 2011.03.24
이클립스 웹 환경 설정  (3) 2011.03.24
이클립스(eclipse) 첫 실행 후 설정  (2) 2011.03.24
 JAVA 코드에서 Activity를 상속받은 클래스는 화면을 구성하기위해서 기본적으로 main.xml이라는 기본으로 생성되는 레이아웃을 생성하여 보여주기위해 setContentView()를 사용한다. (activity 클래스에서 onCreate()는 자바SE의 main() 처럼 프로그램 실행시 가장 먼저 실행되는 메서드이다.) 
package com.example.TestAndroid;

import android.app.Activity;
import android.os.Bundle;

public class TestAndroid extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}
 xml문서의 레이아웃은 뷰를 담는 컨테이너 역할을 하는 부분으로 그 내부에 실제 화면에 나타날 View 객체들의 목록과 구조, 속성들이 정의되어있다. 이러한 xml문서를 실제 안드로이드 프로그램이 실행될 때 메모리에 올리는 과정은 ADT에 포함된 aapt(Android Asset Packaging Tool)에 의해 수행된다. 바로 이러한 수행을 하도록 코드상에 존재하는  메소드가 setContentView() 인 것이다. 이러한 동작을 Inflation(전개)이라고 한다. 

 그럼 여기서 자바 코드로 xml문서에 접근이 가능하기 때문에 xml문서 없이 레이아웃을 만들 수 있을 것이다.  
package com.example.InflationTest;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.widget.LinearLayout;
import android.widget.TextView;

public class InflationTest extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout linear = new LinearLayout(this);
        linear.setOrientation(LinearLayout.VERTICAL);
        linear.setBackgroundColor(Color.WHITE);
        
        TextView text = new TextView(this);
        text.setText("코드로 생성");
        text.setGravity(Gravity.CENTER);
        text.setTextColor(Color.RED);
        text.setTextSize(20);
        
        linear.addView(text); //부모 자식관계 설정과정
        setContentView(linear);
    }
}
 코드상에서 생성한 LinearLayout을 setContentVIew()에 넘겨주었다. 출력결과는 역시 xml로 만든 레이아웃과 다를게 없다.


조금 더 파고 들어 가 보면, 안드로이드는 xml문서의 전개를 위해 시스템 수준에서 전개자를 따로 제공하는데 Activity의 getSystemService()로 전개자를 구할 수 있다. 그리고 전개자 객체의 inflate()로 전개를 수행한다. 
 - Vew inflate(int resource, ViewGroup root)
 inflate()는 또 View의 정적 매소드로도 존재하는데 다음의 사용법과도 동일하다.
 - static View inflate(Context context, int resource, ViewGroup root)

 그럼 여기서 또 헷갈려진다. xml을 전개하여 액티비티에 전개하는 과정은 맨 처음 setContentVIew(linear)로 실행하였는데 위의 inflate()메소드는 또 뭐란말인가.. 
 사실 onCreate() 내부에서 아래 두 코드 모두 동일한 결과를 가져온다.
 - setContentView(R.layout.main)
 - LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);

   View v = (View) inflater.inflate(R.layout.main, null);    setContentView(v);  즉, 결과는 같지만 inflate()를 사용하는 것은 xml문서를 JAVA코드 단계에서 시스템적으로 언제든지 전개 할 수 있다는 것을의미한다. 

 자바에 익숙해 져 있다 안드로이드 덕분에 XML을 알게되었는데, 처음엔 별 생각없이 그저 나눠서 디자인 하니까 편하다고만 생각했는데 자세히 알아가면 갈 수록 단순한 개념이 아니라는걸 느낀다.


 

'Programming > ANDROID' 카테고리의 다른 글

INSTALL_FAILED_INSUFFICIENT_STORAGE  (2) 2011.04.11
eclipse (Helios)에서 android 개발 코딩 속도 버그 수정  (2) 2011.04.06
Layout 중첩 - Multi Page  (6) 2011.03.29
ViewGroup - RelativeLayout  (2) 2011.03.29
ViewGroup - TableLayout  (1) 2011.03.29

+ Recent posts