안써보면 어렵다고.... onCreate 밑에 이거하나 추가해놓고 겁나 가져다 쓰자.


private void popToast(String str){

Toast toast = Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT); 

toast.show();

}

 쓸만한 애플리케이션을 만들다 보면 스레드 사용이 빈번하다. 또한 나를 포함한 대부분의 어플 사용자들은 실행중인 어플을 종료시키기위해 취소버튼을 연타하는 품격없는 행위를 지금 이시간에도 누군가는 분명 하고있을것이다. 

 이때 스레드를 정상적으로 종료시켜주기 위해 Thread.close(); 와 같은 코드를 넣어주는데 역시 나를포함한 초보개발자들이 자주 실수하는 부분이다. 스레드가 진행되다 다양한(?) 이유로 스레드가 종료되는데 또는 스레드를 초기화 하지 않은 상태 ( Thread mThread = null; 이렇게 선언만 해놓은 상태) 에서 이 코드를 만나면 LogCat에서 쳐다보기도 싫은 빨간글씨들이 담배를 생각나게한다.

 보통 안드로이드에서 쓰레드는 엑티비티 생명주기 마지막 finish()에서 선언해주는데 다음과 같이 쓰면 되겠다.

public void finish() {

if(mThread!=null){

    mThread.close();

 }

super.finish();

 }

쓰레드 뿐 아니라 .close()를 사용하는 다양한 객체들 종료시 간단한 if문을 통해 스레드가 null이 아닌지 확인하고 종료하는 습관을 들이자.


Desktop.getDesktop().open(new File("C:/Users/lssang/Downloads/runningman130707.avi"));


짠 ~

간단해보이지만 모르면 몇시간이고 고생하는 ...


Java 어플리케이션으로 Desktop 클래스를 사용하면, 네이티브 데스크탑으로 등록을 마친 관련지을 수 있었던 어플리케이션을 기동해,URI 나 파일을 처리할 수 있습니다.

지원되는 조작에는 다음의 것이 있습니다.

  • 사용자 디폴트의 브라우저를 기동해, 지정된 URI 를 표시한다.
  • 옵션의 mailto URI 를 지정해, 사용자 디폴트의 메일 클라이언트를 기동한다.
  • 등록을 마친 어플리케이션을 기동해, 지정된 파일을 여는, 편집한다, 또는 인쇄한다.

라고 써있는데 쉽게말해 경로가지고 장난치기 좋은 라이브러리 같다.

도입 버전은 1.6


철느님 항상 감사합니다

시나리오: 메인엑티비티에서 버튼 클릭 시 sub엑티비티로 전환되며 이때 "안녕하세요" 라는 

             데이터를 같이 전송한다.


<메인 엑티비티>

public class MainActivity extends Activity{

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

...

public void onClick(View view) {

switch (view.getId()) {

case R.id.Button1:             

          Intent intent = new Intent(MainActivity.this, SubActivity.class);

     intent.putExtra("type", "안녕하세요");  // intent에 

     startActivity(intent);

   break;

}


<서브 엑티비티>

public class SubActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_sub);

Intent intent = getIntent();

String revStr = intent.getExtras().get("type").toString();

}

}


위와 같은 방법으로는 기본형의 데이터만 주고받을 수 있다. int, String, boolean 등..

엑티비티간 객체를 주고받기 위해서는 해당 객체의 클래스를 Serializable인터페이스를 확장시켜준다

public class A implements Serializable{

...

}


메인에서 intent.putExtra("objct",objectName);

서브에서 A object =  (A)intetn.getSerializableExtra("object");

와 같은 형식으로 넘겨받을 수 있다.


엑티비티간 객체전송 출처: http://www.androidpub.com/2429179



xml 코드 중..


<Button 

android:id="@+id/Button1"

android:text="Button" 

android:onClick="onClick"    <== 이부분

android:layout_width="wrap_content" 

android:layout_height="wrap_content"/>


다양한 온클릭 이벤트 작성법이 있지만 xml코드에 버튼 작성 시

android:onClick="onClick"라는 속성을 주면 버튼 클릭시 onClick 메소들 찾아 실행하게 된다.


java코드


...

public class MainActivity extends Activity{

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

...

public void onClick(View view) {

switch (view.getId()) {

case R.id.Button1:            

      //이벤트 작성

   break;

}

}



(변경 전)

socket.send(request.getBytes(), 0); 

(변경 후)

try {

socket.send(request.getBytes("UTF-8"), 0);

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}


코드작성 전에 이클립스의 인코딩 포멧을 미리 UTP-8로 변경해 둔다면 (변경 전) 형식으로도 사용 할 수 있으나 코드의 재사용성을 위해 아래와 같이 작성해 두자.


프로젝트 인코딩 변경 :

 오른쪽 클릭> properties > resource > Text file encoding 란의 other를 utp-8 로 변경

* 다만 위와같은 방법을 쓴다면 미리 작성해논 한글 주석이 깨질수 있다. edit plus가 깔려있다면 해당 파일들을 edit plus로 열어서 문서>파일인코딩>다수파일인코딩>확인 후 인코딩 형식을 utp-8로 설정해주면 이클립스에서 깨졌던 주석이 다시 복구되었을 것이다.

+ Recent posts