私は問題があり、非常に迷惑な問題があり、何が原因であるか全く分かりません。私はXMLファイルを読み込み、XMLファイルからいくつかのデータをArrayListに追加してから、ArrayListをSpinnerに入れることができるAndroidアプリケーションを作成しようとしています。ここに私のショートカットクラスの一部です。ここでAndroid:強制終了Spinner with ArrayList
Shortcuts.java
Spinner selection = (Spinner) findViewById(R.id.shortcutsSpinner); //Defining the Spinner
/*ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.shortcut_selection, android.R.layout.simple_spinner_item); //Defining the items in the Spinner
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
selection.setAdapter(adapter); //Setting the items to the Spinner*/
ArrayList<String> items;
try {
items = scanner.getCategorys();
} catch (FileNotFoundException e) {
items = null;
e.printStackTrace();
} catch (XmlPullParserException e) {
items = null;
e.printStackTrace();
} catch (IOException e) {
items = null;
e.printStackTrace();
}
@SuppressWarnings({ "unchecked", "rawtypes" })
ArrayAdapter<CharSequence> adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item, items);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
selection.setAdapter(adapter);
selection.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
final String simulatorCommands = getString(R.string.Simulator_Commands); //Setting Shortcuts
final String controlSurfaceCommands = getString(R.string.Control_Surface_Commands);
TextView Text = (TextView)findViewById(R.id.shortcutsText); //Defining the TextView
Spinner selection = (Spinner) findViewById(R.id.shortcutsSpinner); //Defining the Spinner
私Scannerクラスの一部私はスキャナactivitに取得することができます
Scanner.java
public ArrayList<String> getCategorys() throws XmlPullParserException, IOException {
ArrayList<String> categorys = new ArrayList<String>();
categorys.add("Please select a category");
//START ADDING HERE
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser parser = factory.newPullParser();
File file = new File(Environment.getExternalStorageDirectory()+ "/fsx_kneeboard/categories.xml");
FileInputStream fis = new FileInputStream(file);
parser.setInput(new InputStreamReader(fis));
parser.next();
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG && parser.getName().equals("name")) {
categorys.add(parser.getText());
}
parser.next();
eventType = parser.getEventType();
}
return categorys;
}
ですy。でも、私がスピナーを開こうとすると、私は近くの力を得て、これをログキャットに入れます。
04-09 17:30:56.452:D/AndroidRuntime(9980):30:56.452:VM 04-09 17をシャットダウン/ W dalvikvm(9980):スレッドID = 1:スレッドは、キャッチされないで終了例外(グループ= 0x4001d7e8) 04-09 17:30:56.482:E/AndroidRuntime(9980):致命的な例外:メイン 04-09 17:30:56.482:E/AndroidRuntime(9980):java.lang.NullPointerException 04/17 17:30:56.482:E/AndroidRuntime(9980):android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355) 04-09 17:30:56.482:E/AndroidRuntime(9980):android .widget.ArrayAdapter.getDropDownView(ArrayAdapter.java:376) 04-09 17:30:56.482:E/AndroidRuntime(9980):android.widget.Spinner $ DropDownAda pter.getDropDownView(Spinner.java:329) 04-09 17:30:56.482:E/AndroidRuntime(9980):android.widget.Spinner $ DropDownAdapter.getView(Spinner.java:325) 04-09 17: 30:56.482:E/AndroidRuntime(9980):android.widget.AbsListView.obtainView(AbsListView.java:1294) 04-09 17:30:56.482:E/AndroidRuntime(9980):android.widget.ListView。 measureHeightOfChildren(ListView.java:1198) 04-09 17:30:56.482:E/AndroidRuntime(9980):android.widget.ListView.onMeasure(ListView.java:1109) 04-09 17:30:56.482: E/AndroidRuntime(9980):android.view.View.measure(View.java:8171) 04-09 17:30:56.482:E/AndroidRuntime(9980):android.view.ViewGroup.measureChildWithMargins(ViewGroup。 java:3132) 04-09 17:30:56.482:E/AndroidRuntime(9980):android.widget.LinearLayout.measureChildBef oreLayout(LinearLayout.java:1012) 04-09 17:30:56.482:E/AndroidRuntime(9980):android.widget.LinearLayout.measureVertical(LinearLayout.java:381) 04-09 17:30:56.482: E/AndroidRuntime(9980):android.widget.LinearLayout.onMeasure(LinearLayout.java:304) 04-09 17:30:56.482:E/AndroidRuntime(9980):android.view.View.measure(ビュー。 Java:8171) 04-09 17:30:56.482:E/AndroidRuntime(9980):android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132) 04-09 17:30:56.482:E/AndroidRuntime 9980):android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1012) 04-09 17:30:56.482:E/AndroidRuntime(9980):android.widget.LinearLayout.measureVertical(LinearLayout.java:381) 04-09 17:30:56.482:E/AndroidRuntime(9980):android.widget.LinearLay out.onMeasure(LinearLayout.java:304) 04-09 17:30:56.482:E/AndroidRuntime(9980):com.android.internal.widget.WeightedLinearLayout.onMeasure(WeightedLinearLayout.java:60) 04-09 17:30:56.482:E/AndroidRuntime(9980):android.view.View.measure(View.java:8171) 04-09 17:30:56.482:E/AndroidRuntime(9980):android.view。 ViewGroup.measureChildWithMargins(ViewGroup。Java:3132) 04-09 17:30:56.482:E/AndroidRuntime(9980):android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 04-09 17:30:56.482:E/AndroidRuntime 9980):android.view.View.measure(View.java:8171) 04-09 17:30:56.482:E/AndroidRuntime(9980):android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132) 04-09 17:30:56.482:E/AndroidRuntime(9980):android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 04-09 17:30:56.482:E/AndroidRuntime(9980):at android.view.View.measure(View.java:8171) 04-09 17:30:56.482:E/AndroidRuntime(9980):android.view.ViewRoot.performTraversals(ViewRoot.java:801) 04-09 17:30:56.482:E/AndroidRuntime(9980):android.view.ViewRoot.handleMessage(ViewRoot.java:1727) 04-09 17:30: AndroidRuntime(9980):android.os.Looper.loop(Handler.java:99) 04-09 17:30:56.482:E/AndroidRuntime(9980):android.os.Looper.loop Looper.java:123) 04-09 17:30:56.482:E/AndroidRuntime(9980):android.app.ActivityThread.main(ActivityThread.java:4627) 04-09 17:30:56.482:E/AndroidRuntime(9980):java.lang.reflect.Method.invokeNative(ネイティブメソッド) 04-09 17:30:56.482:E/AndroidRuntime(9980):java.lang.reflect.Method.invoke(Method.java) :521) 04-09 17:30:56.482:E/AndroidRuntime(9980):com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:858) 04-09 17:30:56.482 :E/AndroidRuntime(9980):com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 04-09 17:30:56.482:E/AndroidRuntime(9980):at dalvik.syst em.NativeStart.main(ネイティブメソッド)
私はlogcatをよく理解していません。私はJavaを初めて使用しています。私は問題がこのコードのビットにあることを知っています。それを削除するとSpinnerが開き、「カテゴリを選択してください」と表示されます。
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG && parser.getName().equals("name")) {
categorys.add(parser.getText());
}
parser.next();
eventType = parser.getEventType();
}
しかし、このコードは私にはきれいだと思います。時間と助けてくれてありがとう、私は非常に感謝します、ゼオキラ。
私はwhileループを編集しました。私はeventType = parser.getEventType();を追加しなければなりませんでした。上記のparser.next(); これは強制終了しませんが、カテゴリを選択してください。XMLファイルの余分なデータは表示されません。ご協力いただきありがとうございます。強制終了以外のデータはありません。 –
しかし、私は別の問題があると思います。あなたはFCを解決しました。 –