У меня проблема, очень неприятная проблема, и я совершенно не знаю, что вызывает ее! Я пытаюсь сделать приложение Android, способное читать XML-файл, добавляя некоторые данные из файла XML в ArrayList, а затем помещая ArrayList в Spinner. Вот часть моего класса Shortcut.Android: Force Закрыть открытие 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
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;
}
я могу попасть в Activit сканер y, но когда я пытаюсь открыть Spinner, у меня получается сила, и это в логарифме.
04-09 17: 30: 56,452 D/AndroidRuntime (9980): Выключение ВМ 04-09 17: 30: 56.452: Вт/dalvikvm (9980): ThreadId = 1: поток, выходящий с неперехваченным Исключение (группа = 0x4001d7e8) 04-09 17: 30: 56.482: E/AndroidRuntime (9980): FATAL EXCEPTION: main 04-09 17: 30: 56.482: E/AndroidRuntime (9980): java.lang.NullPointerException 04-09 17: 30: 56.482: E/AndroidRuntime (9980): at 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): at 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): at android.widget.ListView.onMeasure (ListView.java:1109) 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): at 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): at android.widget.LinearLayout.onMeasure (LinearLayout.java:304) 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): at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:3132) 04-09 17: 30: 56.482: E/AndroidRuntime (9980): at android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1012) 04-09 17: 30: 56.482: E/AndroidRuntime (9980): at 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): at com.android.internal.widget.WeightedLinearLayout.onMeasure (WeightedLinearLayout.java:60) 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. ViewGroup.measureChildWithMargins (ViewGroup.java: 3132) 04-09 17: 30: 56.482: E/AndroidRuntime (9980): at 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): at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:3132) 04-09 17: 30: 56.482: E/AndroidRuntime (9980): at 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): at android.view.ViewRoot.performTraversals (ViewRoot.java:801) 04-09 17: 30: 56.482: E/AndroidRuntime (9980): at android.view.ViewRoot.handleMessage (ViewRoot.java:1727) 04-09 17:30: 56.482: E/AndroidRuntime (9980): at android.os.Handler.dispatchMessage (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): at android.app.ActivityThread.main (ActivityThread.java:4627) 04-09 17: 30: 56.482: E/AndroidRuntime (9980): at java.lang.reflect.Method.invokeNative (собственный метод) 04-09 17: 30: 56.482: E/AndroidRuntime (9980): at java.lang.reflect.Method.invoke (Method.java : 521) 04-09 17: 30: 56.482: E/AndroidRuntime (9980): at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:858) 04-09 17: 30: 56.482 : E/AndroidRuntime (9980): at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616) 04-09 17: 30: 56.482: E/AndroidRuntime (9980): у dalvik.syst em.NativeStart.main (родной метод)
Я не очень разбираюсь в логарифме, я новичок в 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, thx –