0

비슷한 것을 묻는 getIdentifier에 대한 많은 질문이 있음을 알고 있습니다. 나는 많은 것들을 시도했지만, 나는 나의 결과로 0을 계속 얻는다. 나는 단편을 가지고 있으며 그 단편에는 표가 들어 있으며 표는 "빈"보기로 가득 차 있습니다. 보기를 찾고 꽤 간단한 switch 문 (명확성을 위해 제외됨)에서 설정되는 행 및 col 변수를 기반으로 채우기를 시도하고 있습니다. 나는 방법이있다 :안드로이드 getIdentifier 메소드는 조각에 0을 반환합니다.

@Override 
public void onAttach(Activity activity){ 
    super.onAttach(activity); 

    int row; 
    int col; 

    ... methodology that sets row and count ... 

    String idString = "R.id.row" + row + "_col" + col; 
    int id = getResources().getIdentifier(idString, "id", activity.getBaseContext().getPackageName()); 
    int rID = R.id.row1_col1; 

    Log.d(TAG, "id = " + id + " and rID = " + rID + " with " + idString + 
      " for row " + row + " x col " + col); 
} 

여기서 int id는 행/col에 기반한보기의 리소스 ID로 설정되어 있다고 가정한다. 내가 ROW1을 테스트하는 경우 는 COL1 나는 다음과 같은 로그 출력

id = 0 and rID = 2131034203 with idString R.id.row1_col1 for row 1 x col 1 

이 자원 내 행 안부 변수가 나의 방법에 적절하게 설정지고 있다는 있다는 것을, 내 캐릭터가 설정되어 있는지 알려줍니다를 얻을 getIdentifier 사용에 대한 권리 (내가 아는 한). 그렇다면 왜 내가 행과 열을 테스트했는지에 상관없이 항상 0이되는 이유는 무엇입니까?

변수가없는 명시 적 문자열을 사용하여 getResources()를 activity.getResources()로 변경하면서 "id"를 다른 유형으로 변경하려고 시도했습니다. 아무 것도 작동하지 않는 것 같습니다.

+0

'getActivity(). getPackageName() '을 사용하여'activity.getBaseContext(). getPackageName()'을 변경해보십시오. –

+0

@shayan pourvatan 응답 해 주셔서 감사합니다. 나는 변화와 같은 결과를 얻는다. – zgc7009

답변

1

당신은 R.id.id_name를 전달하지만, 단지 id_name하지 않습니다

String idString = "row" + row + "_col" + col; 

두 번째 매개 변수는 id를 찾고있는 시스템을 말한다 세 번째는 시스템 사용하기 위해 어떤 자원 R 파일을 알 수있다.

+0

심각하게? 이것은 답입니다. 어떻게 이전에 발견하지 못했을까요? 정말 고마워 – zgc7009