XML 파일을 읽고 구문 분석하여 개별 요소를 배열에로드하는 메서드가 있습니다. 코드 자체는 Activity 클래스에 포함될 때 작동합니다. 2 가지 액티비티에서 사용해야하므로 유틸리티 클래스를 만들었으므로 필요한 각각의 액티비티에서 하나의 복사본을 호출 할 수 있습니다. 그러나, 그것이 유틸리티 클래스에서 실행되면, 나는 널 포인트 예외를 얻는다. 이것은 내가 할 수있는 것과 할 수있는 것의 규칙을 어 기고 있음을 말해줍니다. 나는 리소스에 대한 액세스와 관련이 있다고 의심한다. (또한 테스트와 마찬가지로) 문자열 리소스에 액세스하려고 시도했으며 NPE도 throw한다.XML 파일의 Android 구문 Null 포인터 예외
다음은 유틸리티 클래스입니다. 첫 번째 Log.i는 LogCat에 나타나지만 두 번째 LogCat에는 없습니다.
class Utils extends MainActivity
{
String debugTag = DEBUG_TAG + "/Utils";
public void loadRankFile() throws XmlPullParserException, IOException
{
int eventType = -1;
boolean boolFoundRanks = false;
int intCounter = 0;
// this line appears in LogCat
Log.i(debugTag, "Inside loadRankFile utility.");
// this line causes the NPE
XmlResourceParser scoutRanks = getResources().getXml(R.xml.scoutranks);
// this line does not appear in LogCat
Log.i(debugTag, "xml file loaded");
.
.
.
}
이
은 위 방법을 호출하는 활동의 코드입니다 :public class RankProgressActivity extends MainActivity
{
String debugTag = DEBUG_TAG + "/RankProgressActivity";
Utils utilities = new Utils();
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.rank_progress);
try
{
initSelectScout();
utilities.loadRankFile();
initSelectRank();
}
catch (IOException e)
{
Log.i(debugTag, "Failure initializing Scout Progress activity items", e);
}
catch (XmlPullParserException e)
{
Log.e(debugTag, "Rank file parse error.", e);
}
.
.
.
}
나는 고전적인 실수를하고있어 확실 해요,하지만 난 그것을 볼 수 없습니다, 그리고 아직까지 지침을 찾을 수 없었습니다. 모든 의견을 주시면 감사하겠습니다. 나는 자바와 안드로이드에 익숙하지 않기 때문에 이것은 나를위한 매우 많은 학습 경험이다.
미리 감사드립니다.
안녕 아 코스 Cz에 :
그런 다음 활동에 당신은 당신이 같은 경우 Utils 방법 부를 것이다 나는 제안을 적용한 만들었지 만 그건 내가 가지고있는 기본 이슈에 도움이되지 못했다. XML 파일의로드는 NPE (XmlResourceParser scoutRanks = getResources(). getXml (R.xml.scoutranks);)를 생성하는 명령문입니다. 이 문장은 Log.i 문으로 둘러싸여 있습니다. 첫 번째 메시지는 표시되고 두 번째 메시지는 표시되지 않습니다. 따라서 클래스 내 배열 사용이 아니라 res/xml의 XML 파일과 같이 클래스가 설정되고 리소스에 액세스되는 방식에 대해 설명합니다. 아이디어가 있습니까? 제공 할 수있는 도움에 감사드립니다. –
감사합니다, Akos Cz - 내가 잘못한 것을 발견했습니다. 솔루션에 컨텍스트를 제공했지만 변경 내용을 적용 할 때 컨텍스트를 생략했습니다. 그 이후로 컨텍스트를 추가하고 NPE를 지나쳤습니다. 올바른 방향으로 움직여 주셔서 다시 한번 감사드립니다. –
문제가 없습니다. 내가 도울 수있어서 기뻐. 유용하다고 생각되면 답변을 수락하십시오 :) –