NullPointerException mit string-array in Spinner
Erste app und so wirklich neu bei android (gespielt über ein Jahr her, aber es kam nichts dabei), anständig zu Programmieren. Zu wollen, stellen Sie sicher app macht auf einem Handy, keine atm-Funktionalität. Kompiliert einwandfrei, keine Probleme dort. Schieben Sie es auf mein Handy und "Leider Splitr aufgehört hat".
Bearbeiten - Hinzugefügt, um die MainActivity.java bearbeitet haben, * vor und nach der (nicht im eigentlichen code), aber nun kennzeichnet es
adapter.setDropDownViewResource(android.R.layout.activity_main);
//Apply the adapter to the spinner
spinnerSplit.setAdapter(adapter);
sagt Error:(18, 36) Bezeichner erwartet
setDropDownViewResource, activity_main und setAdapter alle in rot
Android Studio
Moto G - CM11 4.4.4
Hier ist der code, lassen Sie mich wissen, wenn ich nichts übersehen habe, aus.
MainActivity.java
package com.hydr0dr4gon.splitrv2;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
*import android.widget.ArrayAdapter;
import android.widget.Spinner;*
public class MainActivity extends Activity {
*Spinner spinnerSplit = (Spinner) findViewById(R.id.spinner);
//Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.arraySplitr, android.R.layout.simple_spinner_item);
//Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.activity_main);
//Apply the adapter to the spinner
spinnerSplit.setAdapter(adapter);*
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//Handle action bar item clicks here. The action bar will
//automatically handle clicks on the Home/Up button, so long
//as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
SplitrDialogFragment.java
package com.hydr0dr4gon.splitrv2;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.os.Bundle;
public class SplitrDialogFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
//Use the Builder class for convenient dialog construction
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage(R.string.dialog_split_pay)
.setNegativeButton(R.string.OK, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//User cancelled the dialog
}
});
//Create the AlertDialog object and return it
return builder.create();
}
}
Strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Splitr</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<string name="btnSplit">Split</string>
<string name="btnTip">+ Tip</string>
<string name="txtSplit">Split By</string>
<string name="txtHint">Enter Bill Total</string>
<string name="spinnerSplit">No. of People</string>
<string name="dialog_split_pay">Each Person Pays</string>
<string name="OK">OK</string>
<array name="arraySplitr">
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>6</item>
<item>7</item>
<item>8</item>
<item>9</item>
<item>10</item>
</array>
actvity_main.xml
RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.hydr0dr4gon.splitr.MainActivity">
<TableLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:paddingLeft="40dp"
android:paddingTop="80dp"
android:paddingRight="40dp"
android:paddingBottom="80dp">
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_span="2"
android:inputType="number"
android:ems="10"
android:id="@+id/editText"
android:layout_column="0"
android:layout_weight="1.5"
android:hint="@string/txtHint" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:text="@string/txtSplit"
android:id="@+id/txtSplit"
android:layout_weight="1"
android:textSize="32dp"
android:textAlignment="center"
android:gravity="center" />
<Spinner
android:layout_width="0dp"
android:layout_height="match_parent"
android:id="@+id/spinner"
android:layout_weight="1"
android:spinnerStyle="@android:style/Widget.Spinner.DropDown"
android:textAlignment="center"
android:entries="@array/arraySplitr"
android:prompt="@string/spinnerSplit"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/btnTip"
android:id="@+id/btnTip"
android:layout_weight="1" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/btnSplit"
android:id="@+id/btnSplit"
android:layout_weight="1" />
</TableRow>
</TableLayout>
logcat
> 07-11 21:18:50.899 10290-10290/com.hydr0dr4gon.splitrv2 D/ActivityThread﹕ handleBindApplication:com.hydr0dr4gon.splitrv2
07-11 21:18:50.899 10290-10290/com.hydr0dr4gon.splitrv2 D/ActivityThread﹕ setTargetHeapUtilization:0.75
07-11 21:18:50.899 10290-10290/com.hydr0dr4gon.splitrv2 D/ActivityThread﹕ setTargetHeapMinFree:2097152
07-11 21:18:51.198 10290-10290/com.hydr0dr4gon.splitrv2 D/AndroidRuntime﹕ Shutting down VM
07-11 21:18:51.206 10290-10290/com.hydr0dr4gon.splitrv2 E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.hydr0dr4gon.splitrv2, PID: 10290
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:394)
at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
at android.widget.AbsSpinner.onMeasure(AbsSpinner.java:193)
at android.widget.Spinner.onMeasure(Spinner.java:482)
at android.view.View.measure(View.java:16521)
at android.widget.TableRow.getColumnsWidths(TableRow.java:312)
at android.widget.TableLayout.findLargestCells(TableLayout.java:508)
at android.widget.TableLayout.measureVertical(TableLayout.java:473)
at android.widget.TableLayout.onMeasure(TableLayout.java:439)
at android.view.View.measure(View.java:16521)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:719)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:455)
at android.view.View.measure(View.java:16521)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:16521)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:327)
at android.view.View.measure(View.java:16521)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2552)
at android.view.View.measure(View.java:16521)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1912)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1109)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1291)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:996)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5600)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
at android.view.Choreographer.doCallbacks(Choreographer.java:574)
at android.view.Choreographer.doFrame(Choreographer.java:544)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5137)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:611)
Dank.
- Der Fehler ist in Zeile 394 in com.hydr0dr4gon.splitrv2. Haben Sie gebucht, die ganze Datei?
- speziell in Ihrer ArrayAdapter Begriff.
- Haben Sie schon überprüft, ob die Zeichenfolgen in der Aktivität der XML mit dem Inhalt Ihrer
strings.xml
? - SeahawksRdaBest - Ganze beiden Aktivitäten und die wichtigsten layout
- PM 77-1 - alle übereinstimmen in strings.xml
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese teilt Ihnen mit, dass der Fehler in der Messung der
Spinner
. Mehr genau, eine der Zeichenfolgen, die angezeigt werden soll, im inneren ist es null.Die wahrscheinlichste Ursache ist ein problem mit der
@array/arraySplitr
Ressource. Ist es ein Gültigerstring-array
Ressource im Sinne der Dokumentation?Diese:
sollten statt:
Den
array
element ist für Typisierte Arrays. String-arrays verwenden, müssenstring-array
.@array/arraySplitr
.Ihre logcat hat eine NullPointerException.
E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.hydr0dr4gon.splitrv2, PID: 10290 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:394)
Etwas nicht initialisiert wurde. Aus deinem code kann ich nicht erkennen, was es werden würde. Haben Sie einen ArrayAdapter, und wenn, so dass Sie Sie initialisiert und alle Objekte, die es enthält? Oder ist deine Tabelle nur gefüllt, indem Sie Ihre layout-Datei? Ich würde beginnen, wie die Tabelle gefüllt ist (basierend auf den logcat), aber ich kann nicht genau sehen, was das problem wäre aus dem code, den Sie geschrieben.