XML ファイルを読み込んで解析し、個々の要素を配列にロードするメソッドがあります。コード自体は、Activity クラスに含まれている場合に機能します。2 つの異なるアクティビティから使用する必要があるため、必要な各アクティビティから 1 つのコピーを呼び出せるようにユーティリティ クラスを作成しました。ただし、ユーティリティ クラスから実行すると、null ポイントの例外が発生します。これは、自分ができること、どこからできるかというルールを破っていることを示しています。文字列リソースにも(テストとして)アクセスしようとしたところ、NPEもスローされたため、リソースへのアクセスに関連していると思われます。
これがユーティリティクラスです。最初の Log.i は LogCat に表示されますが、2 番目は表示されません。
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);
}
.
.
.
}
私は古典的な間違いを犯していると確信していますが、私はそれを見ていません。また、まだガイダンスを見つけることができませんでした. フィードバックをいただければ幸いです。私は Java と Android にかなり慣れていないので、これは私にとって非常に勉強になる経験です。
前もって感謝します。