android 개발 중 @ + id / 와 android: id 용법 의 차이 점 은?

오늘 학습 과정 에서 제목 과 같은 문제 가 발생 했 습 니 다. @ + id / 와 android: id 용법 의 차이 점 은?
우선 코드 보기:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
        <ListView
            android:id="@id/android:list"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:drawSelectorOnTop="false"
            android:scrollbars="vertical" >
        </ListView>
</LinearLayout>

상기 코드 에서 시 뮬 레이 터 가 실 행 될 때 이상 이 발생 합 니 다: java. lang. Runtime Exception: Your content must have a ListView whose id attribute is' android. R. id. list.
다음은 Activity 의 코드 를 살 펴 보 겠 습 니 다.
public class ListViewActivity extends ListActivity {
	@Overrided
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
                //        layout            ListView,
                    id    @android:id/list   
                //     Your content must have a ListView whose id attribute is 'android.R.id.list"
                      
                //    。         layout,        layout,    listview  
                setContentView(R.layout.listview);
    }
}

여기 서 물 려 받 은 것 은 ListActivity 이지 원래 의 Activity 가 아 닙 니 다.ListActivity 는 데이터 원본 에 연결 되 어 있 으 며 이 데 이 터 를 표시 하 는 Activity 입 니 다.ListActivity 는 데이터 원본 의 바 인 딩 과 디 스 플레이 를 실현 하기 위해 listview 대상 을 가지 고 있 습 니 다. 보통 array 나 검색 결 과 를 가 진 cursor ListActivity 자체 에 기본 레이아웃 이 있 습 니 다. 전체 화면 을 포함 하 는 list 가 있 습 니 다.기본 레이아웃 을 사용 하려 면 onCreate () 에 setContentView () 라 는 문장 을 주석 해 야 합 니 다.하지만 레이아웃 을 맞 추 려 면 레이아웃 파일 을 만 들 고 onCreate () 에서 setContenttView () 를 호출 하여 이 레이아웃 을 지정 할 수 있 습 니 다. 위의 XML 코드 와 같은 id 가 있어 야 합 니 다.정확 한 코드: 안 드 로 이 드: id = "@ id / android: list" - 수정 - > 안 드 로 이 드: id = "@ 안 드 로 이 드: id / list" 를 수정 하면 시 뮬 레이 터 가 실 행 됩 니 다.
다음은 안 드 로 이 드 API 문서 자 료 를 조회 하여 안 드 로 이 드: id = "@.. /.." x 관련 용법 설명 을 다음 과 같이 기록 합 니 다.      Android 시스템 의 구성 요 소 는 int 형식의 값 으로 표시 해 야 합 니 다. 이 값 은 구성 요소 탭 의 id 속성 값 입 니 다.id 속성 은 자원 형식의 값 만 받 습 니 다. 즉, @ id / result, @ + id / user 등 @ 으로 시작 해 야 합 니 다.@ 뒤에 '+' 를 사용 하면 레이아웃 파일 을 수정 하고 저장 하면 R. 자바 파일 에 해당 하 는 int 형식 변 수 를 자동 으로 생 성 합 니 다.변수 이름 은 '/' 뒤의 값 입 니 다. 예 를 들 어 @ + id / user 는 R. 자바 파일 에서 int user = value (value 는 16 진수 입 니 다. 예 를 들 어 R. 자바 에 있 는 Public static final int user = 0x7f 030003;).user 가 R. 자바 에 같은 이름 의 변수 가 존재 한다 면 새로운 변 수 를 만 들 지 않 고 이 구성 요 소 는 존재 하 는 변수의 값 을 사용 합 니 다.@ + id / name 형식 을 사용 하면 R. java 에 name 변수 가 존재 할 때 이 구성 요 소 는 이 변수의 값 을 표지 로 사용 합 니 다.이 변수 가 존재 하지 않 으 면 새로운 변 수 를 추가 하고 해당 변수 에 해당 하 는 값 을 부여 합 니 다 (중복 되 지 않 습 니 다).Android 시스템 에서 구성 요소 의 id 속성 이 자원 id 이면 됩 니 다. @ drawable / icon, @ string / ok, @ + string / you 등 이미 존재 하 는 모든 자원 id 값 을 설정 할 수 있 습 니 다.물론 안 드 로 이 드 시스템 에 존재 하 는 자원 id 도 설정 할 수 있 습 니 다. 예 를 들 어 제 가 만난 @ id / android: list, 그러면 이 안 드 로 이 드 는 무슨 뜻 입 니까? 실제로 이 안 드 로 이 드 는 시스템 의 R 류 (R. 자바 파일 에서) 가 있 는 package 입 니 다.초보 자 들 이 설명 @ + id / 와 android: id 쓰기 의 차이 에 대한 개술 이 정확 하지 않 을 수도 있 지만 이것 은 개인 학습 과정 만 기록 하 는 것 입 니 다.

좋은 웹페이지 즐겨찾기