package ex.HandlerAccess;
import android.app.*;
import android.os.*;
import android.view.*;
import android.widget.*;
public class HandlerAccess extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.handleraccess);
TextView outText = (TextView)findViewById(R.id.text);
SetTouchHandler(outText);
}
void SetTouchHandler(TextView tv) {
final TextView fText = tv;
LinearLayout linear = (LinearLayout)findViewById(R.id.linear);
linear.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
fText.setText("Touched");
return true;
}
return false;
}
});
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linear"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#e0e0e0"
>
<TextView
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="핸들러에서 외부 변수 액세스 테스트"
android:textColor="#000000"
/>
</LinearLayout>
이 위에서 java 파일에서 r.id에 id가 에러가 나는데 책이랑 똑같이 한건데 에러가납니다.
제가 몇일간 모든 소스다 id가 빨간줄이 처지는데 왜 그런건지 이해를 못하고있나봅니다.
R. 관련된 부분에만 밑줄이 가는거면, 제가 예전에 써둔 글이 도움이 될수도 있겠군요.
링크 걸어 둡니다.
http://croute.me/380
보통 R.layout 이나 R.id 에 빨간 밑줄이 가는 경우는,
그 리스소들을 찾지 못하기 때문입니다.
이 리소스를 찾지 못한다는 말은, R.java 파일을 import 하지 못했다거나,
R.java 파일에 리소스들이 정상적으로 등록되지 않았다는거죠.
일반적인 경우에 이런일이 발생하면,
android.R 이 import 가 되어있어서 packageName.R 을 import 하지 못하기 때문이죠
(packageName = 생성한 프로젝트의 패키지 경로)
이럴땐 어쩔 수 없이 import 되어있는 android.R 을 지우고 자신의 패키지에있는 R 파일을 import 시키면 됩니다.
직접 해도 되고 자동으로(단축키로) 해도 되구요.
이럴때는 환상의 단축키가 있습니다.
알아서 import 해줄것들을 import 해주는 단축키죠.
Ctrl + Shift + o
요녀석 매우 중요하니 요긴하게 써먹으세요 ㅎㅎ
이렇게 해도 해결이 안되면 소스코드 보내주세요 ㅋ 한번 둘러볼게요 ㅋ
블로그는 앞으로도 자주 방문해 주세요 ㅋ