제가 초보라 잘 몰라서 ㅜㅜ
가령 이런 경우 입니다
intent aa = new intent(this, B.class)
intent aa = new intent(A.this, B.class)
이렇게 두가지 경우인데요
위의 경우가 가능한 경우가 있는가 하면
아래 문장의 빨간 부분 처럼 해당 클래스 명을 쓰고 .this 를 붙여줘야 전환이 되는 경우가 있습니다.
어떠한 차이가 있는지 궁금합니다 ㅠ
감사합니다.
답변 감사합니다. 그런데 제가 this만으로 구현한 것을 보면 그 경우 역시 버튼 객체 안에서 사용한 것이 어서 혼란스럽습니다. ㅠ
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button.setOnClickListener(this);
}
{
Intent act = new Intent(this, SecondActivity.class);
startActivity(act);
}
작성하신 onClick은 Activity의 onClick입니다. 아까는 모바일이라 제대로 작성을 못했는데 제가 말한 경우는
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MyActivity.this, SecondActivity.class);
...
}
}
제가 작성한 onClick은 OnClickListener라는 객체를 만들고, 해당 객체(정확히는 클래스)의 onClick을 오버라이드하고 있습니다.
이 시점에선 this는 OnClickListener가 되는 것이지요.
여기서도 이해가 안되시면 클래스 개념(개론?)쪽을 먼저 살펴보시는 것이 향후 지식을 넓히는 데에도 큰 도움이 될 겁니다.
간단하게 말해서 MyActivity.this 이렇게 쓰세요.
this는 말그대로 줄임말인데 줄임말은 줄임의 표현이 가능한 범위내에서만 사용이 가능한거구요.
다른 범위로 들어가면 사용이 안됩니다.
간단히 예를들어서 context를 사용할 때 this만 입력해도 되는 범위가 있고, this만 입력하면 인식못하는 범위가 있죠.
위에서 설명한 button.setOnClickListener(this);
public void onClick(View view){}
이부분은 메인 클래스안에다 작성한거기 때문에 당연히 onClick안에 this를 사용할 수가 있는겁니다.
하지만 아래는
button.setOnClickListener(new OnClickListener() {
2. @Override3. public void onClick(View v) { 4. Intent intent = new Intent(MyActivity.this, SecondActivity.class); 5. ... 6. } 7.} 이부분은 button.setOnClickListener(new OnClickListener() 내부클래스로 만들어버렸기때문에 메인 클래스의 this를 써도 인식을 못하는거죠.그러니까 풀네임을 써주셔야 되는겁니다. 



가령 버튼에 올릴 경우
OnClickListener객체의 onClick메서드에 작성하겠지요?
이럴 결우 this는 OnClickListener가 되기 때문에 액티비티의 클래스명을 붙여주는겁니다