태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

티스토리 툴바



이 게시물을 무단으로 사용하는 행위(비영리, 영리 포함)는 CCL 2.0 저작자 표시-비영리-변경금지 라이센스에 의거하여 금지되어 있습니다. 원본 글의 출처 및 저작자를 표시해 주신다면 글의 스크랩은 자유롭게 하실 수 있습니다. 단, 비영리 목적의 발표(스터디 등)에 위 글을 사용하고 싶으신 분은 제게 미리 메일로 문의 부탁드립니다.

저작권과 관련된 자세한 사항은 이곳을 참조해 주시기 바랍니다.


이번 강좌에서는 인텐트(Intent)를 이용하여 다른 액티비티를 불러오는 것에 대해 알아보도록 하겠습니다.

일단, 강좌를 따라오기 전에, 준비해야 할 것들은 다음과 같습니다.

- 새로운 프로젝트
- 두 개의 소스 코드 및 레이아웃 코드 (액티비티를 두 개 만들어야하니, 당연히 두 개 필요하겠죠??)

중요!!
프로젝트에 액티비티를 추가하는 방법은 이전 포스트(2009/03/01 - [안드로이드/안드로이드 입문] - [강좌] [수정] 이클립스에서 안드로이드 액티비티 추가하기 ) 에서 상세하게 다루고 있으니, 이 글에서는 따로 다루지 않겠습니다.

이번 강좌에서 예제로 만드는 어플리케이션의 구성은 다음과 같습니다.

* 첫 번째 액티비티에서 버튼을 누르면 두 번째 액티비티가 호출됨
* 두 번째 액티비티에서 종료 버튼을 누르면 두 번째 액티비티가 종료됨

우선, 첫 번째 액티비티의 레이아웃 코드와 소스 코드를 보겠습니다.

[레이아웃]
<
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
	android:orientation="vertical" 
	android:layout_width="fill_parent" 
	android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent" 
	android:layout_height="wrap_content" 
	android:text="첫 번째 액티비티 화면입니다."/>
<Button android:layout_width="fill_parent" 
	android:layout_height="wrap_content" 
	android:text="두 번째 액티비티 호출" 
	android:id="@+id/launchActivity"></Button>
</LinearLayout>


[소스]
package com.androidhuman;
import android.app.Activity;
import android.content.Intent; // 인텐트 사용 위해 import합니다.
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class Activity1 extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
                Button launch = (Button)findViewById(R.id.launchActivity);
        launch.setOnClickListener(new Button.OnClickListener(){
	public void onClick(View v) {
		// TODO Auto-generated method stub
		Intent intent = new Intent(Activity1.this, Activity2.class); // 두번째 액티비티를 실행하기 위한 인텐트
		startActivity(intent); // 두번째 액티비티를 실행합니다.
			} 
       	        });
    }
}


다른 것들은 대부분 앞에서 다루었던 것들이고, 생소한 것은 단연 인텐트(Intent)일 것입니다. 인텐트에 관한 것을 설명하자면 엄청 길어지지만, 항상 그래왔던 것처럼(!) 하나하나씩 다루어보도록 하겠습니다. (그래도 늦지 않는답니다!)

이번 예제에서 사용한 인텐트의 생성자는 "다른 액티비티를 호출할 때" 사용하는 생성자입니다. 참고로 인텐트를 사용하여 다른 네이티브 액티비티(전화번호 입력기, 주소록, 브라우저등..)도 호출할 수 있습니다. 하지만 일단 그런 것은 나중에 다루도록 하고, 이번 강좌에서는 사용자 액티비티를 호출하는 것에 대해 다루도록 하겠습니다.

그럼, 생성자의 원형을 분석해보도록 합시다.

public Intent(Context packageContext, Class<?>cls)

* packageContext : 
문서에는 어렵게 설명되어있지만, 한마디로 말하면 호출하는 액티비티를 뜻합니다. 여기에서는 Activity1 이 되겠습니다.
(Activity1.this)
*cls :
호출할 클래스를 뜻합니다. 여기에서는 Activity2 액티비티를 호출해야하므로, Activity2의 클래스인 Activity2.class를 입력합니다.


이렇게 인텐트 설정이 끝났으면, 인텐트를 실행해야겠지요? 사실, 인텐트 자체를 생성함으로써 인텐트가 실행되는 것이 아니라, 인텐트는 하나의 "실행하는 방법"만을 담고 있고, 실제로 그 일을 수행하는 것은 startActivity()메소드가 담당합니다. 인텐트를 실행하는 메소드도 이것 말고도 여러 가지가 있지만, 일단은 요거 하나만 다뤄보도록 하겠습니다.

public void startActivity(Intent intent)

파라미터로 받은 intent 인텐트를 실행합니다.


자, 그럼 첫 번째 액티비티에 대한 코딩은 끝났으니 두 번째 액티비티에 대한 소스와 레이아웃을 설계해보도록 하죠.

[레이아웃]

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:id="@+id/LinearLayout01">

<TextView android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="두번째 액티비티 화면입니다. 아래 버튼을 누르시면 액티비가 종료됩니다." 
android:id="@+id/Activity_2_text"></TextView>

<Button android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="액티비티 종료하기" 
android:id="@+id/terminateActivity"></Button>
</LinearLayout>

[소스]
package com.androidhuman;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class Activity2 extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
	    super.onCreate(savedInstanceState);
	    setContentView(R.layout.layout2);
	    Button terminate = (Button)findViewById(R.id.terminateActivity);
	    terminate.setOnClickListener(new Button.OnClickListener(){
		public void onClick(View v) {
		// TODO Auto-generated method stub
		finish(); // 액티비티를 종료합니다.
		}
	    		   
 		});		    

	}
}


두 번째 액티비티는 사실 더 별 거 없습니다. 버튼에 리스너 다는 건 이제 아무것도 아니고, 인텐트도 없구요. 대신에, 액티비티를 종료하는 메소드인 finish()메소드를 볼 수 있습니다. 사용자가 액티비티를 종료하고 싶을 땐, 이 finish()메소드를 사용하면 됩니다.

public void finish()

액티비티를 종료합니다.

여기까지 잘 따라오셨다면, 다음과 같은 화면을 보실 수 있을 것입니다.
첫 번째 액티비티에서 버튼을 누르면 두 번째 액티비티가 실행되고, 두 번째 액티비티의 버튼을 누르면 두 번째 액티비티는 종료됩니다.

이로서, 인텐트에 대한 첫번째 강좌를 마치도록 하겠습니다.
인텐트는 사실 이 강좌에서 다룬 것보다 훨씬 복잡한 기능을 가지고 있지만, 당장 어플리케이션을 만드는 데 우선순위가 높은 "사용자가 만든 액티비티를 호출"하는 방법에 대해 먼저 다루어보았습니다.

다음 시간에는 사용자가 만든 액티비티를 호출하지만, 조금 더 고급 기능을 사용하는 방법에 대해 다루도록 하겠습니다.

* 추가 - 3/7(토)
많은 분들이 잘 안된다고 하시는데... 아마도 위에 쓴 "액티비티 추가하기" 강좌를 보시지 않아서 그럴 것으로 생각합니다.

일단, 가장 중요한 것은 액티비티 추가 과정을 제데로 수행 하는 것입니다. 액티비티를 추가하는 과정에서 하나라도 빠지게 되면 당연히 오류가 생길 수 밖에 없습니다. 액티비티를 추가하는 방법은 2009/03/01 - [안드로이드/안드로이드 입문] - [강좌] [수정] 이클립스에서 안드로이드 액티비티 추가하기 를 참고하시고, 그래도 제데로 되지 않는 부분이 있다면 자세한 내용과 함께 질문 올려주세요~~


저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License


안드로이드 정보, 강좌를 누구보다 빨리 접하고 싶으신가요?

그렇다면 이메일 구독 혹은  구글 리더에 피드 추가 를 통해 업데이트되는 최신 글들을 받아보실 수 있습니다. :)




TRACKBACK http://androidhuman.tistory.com/trackback/112 관련글 쓰기

댓글을 달아 주세요

  1. intentFilter가 없어서 아마 intent를 못받을거같네용 ^^

    2009/03/07 09:27 [ ADDR : EDIT/ DEL : REPLY ]
    • 설명이 부족한 것 같아서 내용 추가했습니다. :)
      확인해보세용~

      2009/03/08 04:05 [ ADDR : EDIT/ DEL ]
  2. 초보사냥꾼

    Button launch = (Button)findViewById(R.id.launchActivity);
    이부분에서 에러가 잡히는데요 R.id.launchActivity 이부분 에러 같은데 잘 모르겠내요 도움좀 부탁드립니다.

    2009/04/17 11:48 [ ADDR : EDIT/ DEL : REPLY ]
    • 어떤 에러가 발생하는지요?
      어떤 에러인지 말씀해주시지 않아서 정확히 어던 것인지는 모르곘지만, import를 제데로 해 주시지 않으셨거나, id설정이 제데로 되지 않아서 그런 것 같네요.

      2009/04/17 21:42 [ ADDR : EDIT/ DEL ]
  3. 그러니까..

    1.심부름꾼을 불러서(내가 어느아무개에게) --->Intent intent= new Intent(contextPackage,cls);
    2.심부름꾼을 내싸인을 첨가해서아무개에게보내면 --->startActivityForResult(intent,reqCode);
    3.어느아무개가 그심부름꾼 만나서 --->Intent intent=getIntent();
    4.그심부름꾼에게 물건을주고 --->intent.putExtra()..

    물건이 제대로 포장됬는지 확인도장
    찍고하고 심부름시킨사람이름쓰고
    심부름꾼돌려보낼준비하고 ---->setResult(RESULT_OK,intent);

    일이 다끝났으면 다했다싸인해주고
    돌려보내고 ---->finish();

    심부름꾼오길기다리며책읽다심부름꾼이
    가져온소포에 확인도장과 내싸인이 맞으니
    뜯어서 본다. --->onActivityResult();

    이렇게 이해애야하나요?

    2009/10/02 14:26 [ ADDR : EDIT/ DEL : REPLY ]
  4. yally

    강좌에 쓰신데로 activity추가 과정을 몇번이나 똑같이 실행해서 에뮬레이터로 돌려보았는데요..

    에뮬레이터에서

    The application Intent(process com.yally.intent) has stopped unexpectedly. Please try again

    라는 말이 뜹니다. 아직 초보라 어디가 잘못되었는지 알 수가 없는데 참고할 부분이라도 말해 주시면

    안될까요?

    소스는 이클립스에서 붙여넣었고 에러표시는 없습니다.

    2009/11/04 18:33 [ ADDR : EDIT/ DEL : REPLY ]
    • http://androidhuman.tistory.com/entry/%EB%9F%B0%ED%83%80%EC%9E%84-%EC%97%90%EB%9F%ACRun-time-Error%EC%97%90-%EB%8C%80%EC%B2%98%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95

      을 참고해서 LogCat에서 나오는 메시지를 참고하세요.

      2009/11/06 19:12 [ ADDR : EDIT/ DEL ]
  5. onehand

    yally님 저와 같은 에러네요; 저도 소스에는 에러가 없는데, 같은 문제가 나타납니다..

    2009/11/06 18:16 [ ADDR : EDIT/ DEL : REPLY ]
    • http://androidhuman.tistory.com/entry/%EB%9F%B0%ED%83%80%EC%9E%84-%EC%97%90%EB%9F%ACRun-time-Error%EC%97%90-%EB%8C%80%EC%B2%98%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95
      을 참고하세요~

      2009/11/06 19:13 [ ADDR : EDIT/ DEL ]
  6. neo279

    위의 소스대로 실행 했는데 예상치 못한 어쩌구 에러가 뜨면
    아래의 내용에 추가해주면 되네요...
    저두 참... 삽질하다가 ㅋㅋㅋ
    AndroidManifest.xml 파일에
    두번째 Activity2를 호출하기 위해선 Activity2 에 대한 선언이 되어져 있어야 하는데 위의 설명에 그 부분이 빠져 있네요... 저두 겨우 삽질끝에 알아냈어요...
    하여 해결 방법은

    AndroidManifest.xml에 아래의 내용을 추가해주면 됩니다.

    <activity
    android:label="@string/app_name"
    android:name="Activity2">

    </activity>

    이제 다시 실행해보시면 될겁니다.

    2009/12/03 14:46 [ ADDR : EDIT/ DEL : REPLY ]
    • 중요!!
      프로젝트에 액티비티를 추가하는 방법은 이전 포스트(2009/03/01 - [안드로이드/안드로이드 입문] - [강좌] [수정] 이클립스에서 안드로이드 액티비티 추가하기 ) 에서 상세하게 다루고 있으니, 이 글에서는 따로 다루지 않겠습니다.

      많은 분들이 잘 안된다고 하시는데... 아마도 위에 쓴 "액티비티 추가하기" 강좌를 보시지 않아서 그럴 것으로 생각합니다.

      일단, 가장 중요한 것은 액티비티 추가 과정을 제데로 수행 하는 것입니다. 액티비티를 추가하는 과정에서 하나라도 빠지게 되면 당연히 오류가 생길 수 밖에 없습니다. 액티비티를 추가하는 방법은 2009/03/01 - [안드로이드/안드로이드 입문] - [강좌] [수정] 이클립스에서 안드로이드 액티비티 추가하기 를 참고하시고, 그래도 제데로 되지 않는 부분이 있다면 자세한 내용과 함께 질문 올려주세요~~

      글의 위, 아래에서 두번이나 말씀드렸다지요. :)

      2009/12/03 18:52 [ ADDR : EDIT/ DEL ]
  7. beginner

    아 드디어 문제 원인을 찾았습니다 커니님.
    위 xml 소스들에서 Linearlayout, Textview 등을 LinearLayout, TextView 으로 바꾸어야만 합니다.
    커니님이 포스팅 하시면서 자동으로 소문자로 변경된건 아닌가 싶네요.
    이러면서 배우는거 아닌가 싶습니다.

    2009/12/04 10:55 [ ADDR : EDIT/ DEL : REPLY ]
    • 예전에 포스팅할때 티스토리 에디어 문제 떄문에 LinearLayout, Button 등의 태그가 모두 대문자(...) 로 바뀌어버려서, 나중에 그것들을 다시 수정하던 과정에서 저렇게 되어버렸군요.

      이젠 그 문제 해결했으니 괜찮을겁니다 :)
      혹시 다른 곳에도 오타(?) 있으면 제보 부탁드려요~

      2009/12/04 11:10 [ ADDR : EDIT/ DEL ]
  8. 초록맘

    정상적으로 Activity 등록하고, xml파일 만드셨는데(자동으로 R클래스에 주소잡아줍니다.) 안되시는분은 혹시 xml파일을 대문자로 쓰셨는지 확인해보세요. a-z하고0-9만 지원되네요. 아 그리고 자바클래스 만들듯이 프로젝트에서 오른쪽마우스 new해서 java파일 만들면 AndroidManifest에 Activity로 등록이 안되는거 같습니다. 그래서 커니님이 설명해주신데로 Activity를 생성하거나 아니면 만들어 놓으신 자바파일을 AndroidManifest Application탭에서 Add로 추가하신담에 Browser로 땡기셔야할듯

    2010/01/15 11:52 [ ADDR : EDIT/ DEL : REPLY ]
  9. 월리

    하하 요즘 커니님 강의보느라 시간가는줄 모르고 있는 학생입니다 :D

    이번강의는 조금 어렵더군요 ㅠ layout탭에서 layout2.xml을 만들고 싱크로?가 안되더라도

    일단 주욱 코딩하시고 그담에 실행시켜보면 R에서 자동적으로 잡아주는거 같아요.

    그리고 2.01 버전 쓰시는 분들은

    activity2 에서

    terminate.setOnClickListener(new OnClickListener(){

    요렇게만 OnClickListener 를 만들어주셔도 될꺼 같아요. (왠진 저도 몰라요~~~)

    강의 감사합니다 ^^

    2010/01/24 05:54 [ ADDR : EDIT/ DEL : REPLY ]
    • 넵 그렇게하는것이 일반적입니다 :)
      위 글도 좀 예전 글이라 -_- 저도 헤매면서 쓴 것들이 보이네요 ㅎㅎ

      한가지 주의할 점은 View.OnClickListener 뿐만 아니라 DialogInterface.OnClickListener도 있으므로 구별해주어야 합니다 :)

      2010/01/26 01:28 [ ADDR : EDIT/ DEL ]
  10. 이번 Activity 파트하면서 정말 공부 많이 한거 같습니다 ^^

    몇번이나 계속 에러나서 이렇게 저렇게 해보다 결국 성공했습니다~

    강좌 잘봤습니다!@

    2010/02/12 01:22 [ ADDR : EDIT/ DEL : REPLY ]
  11. Intent intent = new Intent(start.this, HelloWorld.class);
    에서요 HelloWorld.class 자리에 String 변수를 넣어서 사용하려고 합니다. 아래처럼요.

    protected void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
    super.onListItemClick(l, v, position, id);
    String test = SAMPLES[position];
    String target = test + ".class";

    Intent intent = new Intent(start.this, target);
    // Intent intent = new Intent(start.this, HelloWorld.class);
    // startActivity(intent); }

    static final String[] SAMPLES = new String[] {
    "HelloWorld", "HelloWorld"
    };

    사용자가 ListView에 있는 거 하나 선택하면 그 이름+.class해서 intent를 불러오려고 합니다.
    그런데 public Intent (Context packageContext, Class<?> cls) 에서 변수를 사용할 수는 없는 것 같네요.

    이럴 경우 해결 방법 없을까요?

    2010/03/13 21:06 [ ADDR : EDIT/ DEL : REPLY ]
    • 그럴땐 굳이 위와 같이 하시는 것 보다 암시적 인텐트(Implicit Intent)를 사용하여 액션을 지정해주고 사용하는 것이 좋습니다.

      암시적 인텐트를 사용해보세요~

      2010/03/13 22:03 [ ADDR : EDIT/ DEL ]
  12. 정말 감사드립니다...

    사실 암시적 인텐트는 잘 이해가 안 되서 대충 넘어갔는데...
    말씀 듣고 한번 해 보니까 훨씬 낫네요.

    일단 intent.setClassName(this, 변수); 이거 써서 원래 하려고 했던거랑은 거의 비슷하게 됐어요.

    그리고 암시적인텐트를 써서 배열 수를 팍 줄일 수 있었구요.
    그런데 아래 코드 보면 제가 짠 로직으로는 ListView에서 예를 들어 P로 검색하면 PICKER 하나가 뜨는데 이게 1번이 되서 누르면 HELLOWWORLD가 나오더라구요.
    물론 SAMPLE을 없애고 모두 암시적인텐트에서 같은 ACTION 걸어놓으면 해결 되겠지만 지금 배우는 입장이니 LISTVIEW의 이런 문제점도 한번 해결하려고 합니다.
    혹시 아시면 ^^ 알려 주시면 감사하겠습니다.

    public class implecitStart extends ListActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setListAdapter(new ArrayAdapter<String>(this,
    android.R.layout.simple_list_item_1, SAMPLES));
    getListView().setTextFilterEnabled(true);
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
    super.onListItemClick(l, v, position, id);
    String target = "my.accumulate." + SAMPLES[position];
    Intent intent = new Intent(target);
    Toast.makeText(implecitStart.this, target, Toast.LENGTH_SHORT).show();
    startActivity(intent); }

    static final String[] SAMPLES = new String[] {
    "HELLOWORLD", "LAYOUT","PICKER","FORM"
    };

    2010/03/14 14:16 [ ADDR : EDIT/ DEL : REPLY ]
    • 보통은 position 정보를 이용하기보다는 id정보를 많이 이용합니다. (선택한 항목의 id값 - 데이터베이스 연동에서 쓰이죠)

      ListView에서 Filter를 사용하게 되면 위와 같은경우 p로 시작하는건 딱 하나밖에 없으니 선택한 인덱스 값이 0이 되는게 맞습니다. 그래서 HelloWorld가 뜨게 되는거구요.

      결론적을 말씀드리자면, 저 로직에서는 위의 문제를 해결할 뾰족한 방법이 없는 걸로 보이네요. 조금 더 깊이 생각을 해보든지, 다른 로직으로 바꿔보든지 해야 할 것 같습니다. ㅠㅠ

      (제가 어플을 작성할 때는 저런 경우가 없어서요.;;)

      2010/03/15 01:56 [ ADDR : EDIT/ DEL ]
  13. 웅컁컁

    커니님 안녕하세요~
    강좌 잘 따라해보고 있습니다
    다름이 아니고 제가 탭 두개 만들어서 인텐트 써가지고 불러오는거 해보고 있는데요
    java.lang.noclassdeffound 나오면서 불러오려고 하는 액티비티 있는 클래스를 못찾겠다고 나오네요
    분명히 오타도 아니고 멀쩡하게 패키지 안에 잘 있는데 왜그러는 걸까요?

    2010/03/26 15:46 [ ADDR : EDIT/ DEL : REPLY ]
    • 메니페스트 파일에 액티비티 선언이 되어있는지 확인해보세요.

      2010/03/27 07:57 [ ADDR : EDIT/ DEL ]
  14. 초보

    강좌 잘보고 있습니다. 저같은 초보에게 도움이 많이 되네요
    질문이 있는데요...다른 액티비티로 넘어가는거에 버튼을 사용하셨는데
    버튼형식말고 그냥 텍스트형식에 에 링크 걸어서 눌렀을때 다른 액티비티로 가게 할 수 있나요?
    가령 jsp에서 볼때 <a href=> 텍스트</a> 이런식으로 링크 걸어서 눌렀을때 다른 페이지로 가는것처럼
    그냥 텍스트뷰형식같은거로 만든 것도 링크 걸어서 다른 액티비티로 가게 되는지 궁금하네요

    2010/06/28 10:31 [ ADDR : EDIT/ DEL : REPLY ]
    • 여러 텍스트 중 특정 텍스트에만 링크를 거는건 잘 모르겠고...
      텍스트뷰 자체를 클릭했을때 다른액티비티로 넘어가도록 할 수는 있습니다.

      onTouchEvent를 사용하시면 될 것 같군요.

      2010/07/01 11:17 [ ADDR : EDIT/ DEL ]
  15. 양박사

    BaseAdapter로 상속을 받아서 , 새로운 어댑터를 생성했구요 , 그 안에 버튼들이 리스트 업 됩니다.
    사용자가 선택을하면 , 선택한 정보를 받아서 새 인텐트를 실행하려고 하는데

    메인클래스가 아니라 따로 만들어져있는 어뎁터 클래스라서 그런지 ,
    Intent i = new Intent(maincon, custBill.class);
    maincon.startActivity(i);
    하면 에러네요 maincon은 생성시 가져온 콘텍스트입니다.

    뭔가 방법이 있을듯 한데... 좀 부탁드릴께요

    2010/07/16 04:08 [ ADDR : EDIT/ DEL : REPLY ]
  16. Ellie

    잘 보고 갑니다. 덕분에 많은 도움이 되었어요^^

    2010/11/05 17:52 [ ADDR : EDIT/ DEL : REPLY ]
  17. 진인

    지금도 답변해주실수 있나 몰르겠네용~~
    저도 보고 해봣는데요~
    에러 없구요~ 엑티비티 연결 됀것같은데요
    에뮬레이터로 실행을 해서 클릭을 하면 넘어가긴 가는대요....
    서브 엑티비티 화면이 안나오고 검은 화면으로 바뀌네요;;;;
    에러는 없는것 같구요... 왜이런건지... 2틀제 고민중이군요;;; 다시해도 이모냥이고.. 혹시 아시나용 ㅜ.,ㅜ

    2010/11/14 20:38 [ ADDR : EDIT/ DEL : REPLY ]
    • 피호출 액티비티에서 레이아웃을 설정하셨나요?

      레이아웃을 생성하고 setContentView() 등의 메서드로 레이아웃을 지정하지 않으셨을 가능성이 높아보이네요!

      2010/11/15 11:49 [ ADDR : EDIT/ DEL ]
  18. 초보

    안녕하세요
    보고 따라해 보았는데요
    두 번째 액티비티 호출 을 눌러도 안넘어가서요~
    두번째 레이아웃을 어디에 추가해야될지 몰라서 layout 폴더에 layout2.xml로 만들어서 넣었는데 다른곳에 넣어야 하는건지요

    2011/01/20 17:31 [ ADDR : EDIT/ DEL : REPLY ]
    • 안넘어간다는건 srartActivity()를 호출하지 않거나, 버튼의 OnClickListener가 제대로 등록되어 있지 않아서 그렇습니다.

      코드를 다시한번 확인해보세요~

      2011/01/21 13:01 [ ADDR : EDIT/ DEL ]
    • 초보

      글 내용보고 한거라 빠진건없는거 같은데ㅠㅠ;
      어렵네요

      2011/01/21 14:19 [ ADDR : EDIT/ DEL ]
    • 안넘어간다는게 버튼을 눌러도 반응이 없다는건가요, 아니면 에러가 뜨는건가요?

      어려운 내용은 아닌데 처음 하시면 헷갈리실 수도 있어요. 아무튼 이전 댓글에 단 항목을 꼼꼼하게 다시한번 확인해보세요.

      2011/01/21 14:39 [ ADDR : EDIT/ DEL ]
  19. 淸月

    정말로 감사합니다 ㅠ,.ㅠ
    이 것 때문에 며칠동안 고민하고 자료를 찾았는데, 덕분에 해결되었습니다.
    복받으실껍니다 ㅠ,.ㅠb

    2011/04/11 16:01 [ ADDR : EDIT/ DEL : REPLY ]
  20. Hayanse

    음 종료 버튼 찾다가 이 글을 보게 됬는데요.. 피니쉬를 쓰면 두번째 장에서 첫번째 장으로 넘어가잖아요.
    그럼.. 두번째장에서 첫번째가 아닌 어플을 종료하는 방법은 어떻게 되는지요;; 이걸 찾을수가 없네요.

    2011/05/21 20:34 [ ADDR : EDIT/ DEL : REPLY ]
    • 애플리케이션과 액티비티의 개념과 액티비티 스택 부분을 다시 한번 보시기를 추천합니다. 아마 애플리케이션이 아니라 액티비티를 말씀하시는 것 같은데, 안드로이드에서는 액티비티 스택을 잘 관리하는 방법으로 모든 것을 컨트롤해야 합니다. 액티비티 속성을 어떻게 지정하느냐에 따라 액티비티 스택에 남도록 할 수도 있고, 액티비티 스택을 모두 날릴 수도 있고, 액티비티 스택의 순서를 바꿀 수도 있습니다.

      2011/05/21 23:04 [ ADDR : EDIT/ DEL ]
    • 아, 그리고 안드로이드 앱에서 종료를 한다는 것은 어디에서든지 '종료' 버튼을 눌러 종료를 하기보다는 액티비티 스택을 clear한다는 개념으로 보시는게 더 정확합니다.

      일련의 액티비티 스택이 있고, 적합한 경로를 따라 애플리케이션을 실행하다가 사용자가 역순으로 자연스럽게 애플리케이션에서 빠져나오도록 액티비티 flow를 설계하는 것이 가장 중요하다 할 수 있습니다.

      2011/05/21 23:06 [ ADDR : EDIT/ DEL ]
  21. 아귀

    안드로이드 공부 하다가 좋은글 보게 되서 우선 감사합니다.

    질문이 있는데요 메인 엑티비티에서 엑티비티를 호출하고 그 호출한 엑티비티에서 또다시 엑티비티를

    호출할수는 없나요?? 위에 글대로 해보려고 했는데 오류는 없는데

    Caused by: java.lang.SecurityException: Neither user 10038 nor current process has android.permission.WAKE_LOCK. 이렇게 뜨네요 ㅠㅜ 답변 좀 부탁드립니다. ~

    2011/06/01 11:57 [ ADDR : EDIT/ DEL : REPLY ]
    • 액티비티 호출과는 관련없는 오류입니다. 아마 다른 곳에서 오류가 난 것으로 추정됩니다. 아니면 Wake lock을 잘못 사용하셨을지도 모르겠군요.

      2011/06/05 16:16 [ ADDR : EDIT/ DEL ]
  22. 좋은 글 잘 보고 갑니다. 다음에도 또 좋은 글 기대 할께요. 퍼가도 되죠?

    2011/06/15 22:14 [ ADDR : EDIT/ DEL : REPLY ]
  23. 오랫만입니다~ 커니님~ ^_^

    다른게 아니라, onCreate에서 Bundle savedInstanceState 가 안 불러지는 상황이 발생하는데

    무엇이 문제인걸까요~

    새 엑티비티를 생성했는데, oncreate 함수가 아무런 변수를 못 불러오는 것 같습니다.

    setContentView도 설정하는데 실패가 뜨네요~

    2011/08/22 16:14 [ ADDR : EDIT/ DEL : REPLY ]
    • 해결했습니다^^;;;

      그래도 안부차 댓글은 그대로 유지~ ^^

      2011/08/22 16:18 [ ADDR : EDIT/ DEL ]
  24. 하준

    궁금한게 있어서요.

    지금 졸업작품으로 안드로이드 앱 어린이 동화를 만들고 있습니다.

    만들다 보니 액티비티들을 여러개가 필요하더라구요

    그래서 위의 글을 읽고 실행을 해보니 1페이지에서 2페이지로는 넘어갑니다

    그런데 2페이지에서 3페이지로 안 넘어가더라구요

    Logcat 내용을 살펴보니 thread exiting with uncaught exception(group=0x409c01f8)이라구 적어져 있더라구요

    졸작을 만들려구 이번에 처음으로 안드로이드에 손을 대게 됐는데

    그동안 커니님 웹페이지 보고 지금까지 수월하게 만들어왔다 생각했는데

    여기서 막히니 어떻게 해야할지를 모르겠더라구요

    답변 좀 부탁드리겠습니다.

    2012/06/04 09:45 [ ADDR : EDIT/ DEL : REPLY ]
    • 로그캣에 다른 내용을 보셔야 할 듯 하네요.
      보통 caused by : 부분에 오류 원인이 나와있습니다.

      2012/06/06 01:22 [ ADDR : EDIT/ DEL ]
  25. 솔향

    잘되네요 ㅎㅎ 감사합니다 ^^ 처음 액티비티를 제대로안해서 한시간가량 날렸지만 다른 문제점은 없는듯해요 ㅎㅎ.
    좋은자료 감사합니다 ^^ 혹시 블로그에 퍼가도될까요? ㅎ

    2012/10/23 05:51 [ ADDR : EDIT/ DEL : REPLY ]
    • 출처와 링크 본문에 남겨주시면 됩니다 :)

      2012/10/26 16:31 [ ADDR : EDIT/ DEL ]