在我的主要活动调用以下活动后,我的应用程序崩溃并出现一个nullpointer异常(在LogCat中看到)。 在调试和监视我的变量之后,我无法确定问题所在。
public class MyClass extends Activity {
private Spinner pay_spend;
private Spinner pay;
private Spinner person;
private EditText edit_pay;
private boolean initCall;
private OnItemSelectedListener itemSelected;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_einbezahlen);
pay_spend = (Spinner) findViewById(R.id.spinner_bezahlen_spende);
pay = (Spinner) findViewById(R.id.spinner_bezahlen);
person = (Spinner) findViewById(R.id.spinner_person);
edit_pay = (EditText) findViewById(R.id.id_field_einzahlen);
pay.setVisibility(View.INVISIBLE);
edit_pay.setVisibility(View.INVISIBLE);
this.initOnItemSelectedListener();
pay_spend.setOnItemSelectedListener(itemSelected);
}
private void initOnItemSelectedListener() {
itemSelected = new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
if(initCall) {
initCall = false;
} else {
if(position == 0) {
edit_pay.setVisibility(View.INVISIBLE);
pay.setVisibility(View.VISIBLE);
} else {
pay.setVisibility(View.INVISIBLE);
edit_pay.setVisibility(View.VISIBLE);
}
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
pay.setVisibility(View.INVISIBLE);
edit_pay.setVisibility(View.INVISIBLE);
}
};
}
在每个断点处设置并更正我的变量,设置了具有旋转器条目的字符串数组并且具有正确的值(对于int数组相同)
活动的XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="8dp"
android:paddingRight="8dp" >
<Spinner
android:id="@+id/spinner_bezahlen_spende"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/spinner_person"
android:layout_below="@+id/spinner_person"
android:entries="@array/bezSpende"
tools:listitem="@android:layout/simple_spinner_dropdown_item" />
<Spinner
android:id="@+id/spinner_person"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:layout_marginTop="21dp"
android:entries="@array/personen"
tools:listitem="@android:layout/simple_spinner_dropdown_item" />
<Spinner
android:id="@+id/spinner_bezahlen"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/spinner_bezahlen_spende"
android:layout_below="@+id/spinner_bezahlen_spende"
android:entries="@array/kosten"
tools:listitem="@android:layout/simple_spinner_dropdown_item" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="17dp"
android:text="@string/txt_einzahlen_text" />
<TextView
android:id="@+id/text_rueckmeldung"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn_einzahlen"
android:layout_centerHorizontal="true"
android:layout_marginTop="16dp"
android:text="@string/txt_rueckmeldung"
android:textAppearance="?android:attr/textAppearanceMedium" />
<Button
android:id="@+id/btn_einzahlen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/id_field_einzahlen"
android:layout_centerHorizontal="true"
android:layout_marginTop="18dp"
android:onClick="onButtonClick"
android:text="@string/txt_btn_einzahlen" />
<EditText
android:id="@+id/id_field_einzahlen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/spinner_bezahlen"
android:layout_centerHorizontal="true"
android:layout_marginTop="22dp"
android:ems="10"
android:inputType="number"
android:labelFor="@+id/id_field_einzahlen"
android:text="@string/txt_betrag_eingeben" />
</RelativeLayout>
我刚开始用Android SDK编程,这就是为什么几乎所有的XML代码都是用eclipse提供的图形工具生成的
logcat的:
10-16 06:31:03.936: E/AndroidRuntime(5704): FATAL EXCEPTION: main
10-16 06:31:03.936: E/AndroidRuntime(5704): Process: de.storno.wortspielkasse, PID:5704
10-16 06:31:03.936: E/AndroidRuntime(5704): java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:394)
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.widget.AbsSpinner.onMeasure(AbsSpinner.java:197)
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.widget.Spinner.onMeasure(Spinner.java:505)
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.view.View.measure(View.java:16987)
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:722)
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:458)
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.view.View.measure(View.java:16987)
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5257)
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.widget.FrameLayout.onMeasure(FrameLayout.java:314)
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.view.View.measure(View.java:16987)
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5257)
10-16 06:31:03.936: E/AndroidRuntime(5704): at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:447)
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.view.View.measure(View.java:16987)
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5257)
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.widget.FrameLayout.onMeasure(FrameLayout.java:314)
10-16 06:31:03.936: E/AndroidRuntime(5704): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2429)
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.view.View.measure(View.java:16987)
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1986)
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1157)
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1368)
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1044)
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5749)
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.view.Choreographer.doCallbacks(Choreographer.java:580)
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.view.Choreographer.doFrame(Choreographer.java:550)
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.os.Handler.handleCallback(Handler.java:738)
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.os.Handler.dispatchMessage(Handler.java:95)
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.os.Looper.loop(Looper.java:135)
10-16 06:31:03.936: E/AndroidRuntime(5704): at android.app.ActivityThread.main(ActivityThread.java:5070)
10-16 06:31:03.936: E/AndroidRuntime(5704): at java.lang.reflect.Method.invoke(Native Method)
10-16 06:31:03.936: E/AndroidRuntime(5704): at java.lang.reflect.Method.invoke(Method.java:372)
10-16 06:31:03.936: E/AndroidRuntime(5704): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:836)
10-16 06:31:03.936: E/AndroidRuntime(5704): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:631)
当ZygoteInit $ Method ...被称为“未找到来源”的错误时。显示
我现在在网上搜索了将近4小时,并没有找到解决问题的方法。 希望你能给我任何建议或提示,以摆脱这个问题
提前致谢
编辑: 我刚刚发现我在int数组中遇到了一些问题。它未正确初始化(所有值均为空),但具有适当数量的条目。
<integer-array name="kosten">
<item >10</item>
<item >20</item>
<item >30</item>
<item >40</item>
<item >50</item>
<item >60</item>
<item >70</item>
<item >80</item>
<item >90</item>
<item >100</item>
</integer-array>
我正在寻找解决方案
答案 0 :(得分:0)
尝试在onCreate()方法上实现itemSelect OnItemSelectedListener,之前我遇到过这个问题。
答案 1 :(得分:0)
对于微调器entries
,请使用string-array
代替integer-array
。