【发布时间】:2015-12-03 00:16:59
【问题描述】:
这个问题很奇怪,请多多包涵。
我已手动将 Android 项目从 Android Studio 1.3.2 移植到 Eclipse Mars 4.5.0。
在这个(看似成功的)端口之后,我面临以下问题: 我的自定义微调器适配器已停止工作。
这是自定义微调器适配器中发生故障的一段代码:
@Override
public View getDropDownView(int position, View convertView,
ViewGroup parent) {
if (convertView == null) {
convertView = View.inflate(getContext(), R.layout.spinner_dropdown_item, null);
}
TextView label = (TextView) convertView.findViewById(R.id.spinner_text);
label.setText(getItem(position).getName());
return label;
}
运行调试器时,没有单个语句失败。检查 label 变量,设置文本,一切正常。但是,当函数结束时,我得到了这个堆栈跟踪:
09-07 15:14:57.888: E/AndroidRuntime(5650): FATAL EXCEPTION: main
09-07 15:14:57.888: E/AndroidRuntime(5650): Process: com.example.objectives, PID: 5650
09-07 15:14:57.888: E/AndroidRuntime(5650): java.lang.NullPointerException
09-07 15:14:57.888: E/AndroidRuntime(5650): at android.widget.TextView.checkForRelayout(TextView.java:8014)
09-07 15:14:57.888: E/AndroidRuntime(5650): at android.widget.TextView.setText(TextView.java:4864)
09-07 15:14:57.888: E/AndroidRuntime(5650): at android.widget.TextView.setText(TextView.java:4717)
09-07 15:14:57.888: E/AndroidRuntime(5650): at android.widget.TextView.setText(TextView.java:4692)
09-07 15:14:57.888: E/AndroidRuntime(5650): at com.example.objectives.adapters.StageSpinnerAdapter.getDropDownView(StageSpinnerAdapter.java:44)
09-07 15:14:57.888: E/AndroidRuntime(5650): at android.support.v7.widget.AppCompatSpinner$DropDownAdapter.getDropDownView(AppCompatSpinner.java:624)
09-07 15:14:57.888: E/AndroidRuntime(5650): at android.support.v7.widget.AppCompatSpinner$DropDownAdapter.getView(AppCompatSpinner.java:620)
09-07 15:14:57.888: E/AndroidRuntime(5650): at android.support.v7.internal.widget.ListViewCompat.measureHeightOfChildrenCompat(ListViewCompat.java:290)
09-07 15:14:57.888: E/AndroidRuntime(5650): at android.support.v7.widget.ListPopupWindow.buildDropDown(ListPopupWindow.java:1200)
09-07 15:14:57.888: E/AndroidRuntime(5650): at android.support.v7.widget.ListPopupWindow.show(ListPopupWindow.java:584)
09-07 15:14:57.888: E/AndroidRuntime(5650): at android.support.v7.widget.AppCompatSpinner$DropdownPopup.show(AppCompatSpinner.java:766)
09-07 15:14:57.888: E/AndroidRuntime(5650): at android.support.v7.widget.AppCompatSpinner.performClick(AppCompatSpinner.java:424)
09-07 15:14:57.888: E/AndroidRuntime(5650): at android.view.View$PerformClick.run(View.java:19422)
09-07 15:14:57.888: E/AndroidRuntime(5650): at android.os.Handler.handleCallback(Handler.java:733)
09-07 15:14:57.888: E/AndroidRuntime(5650): at android.os.Handler.dispatchMessage(Handler.java:95)
09-07 15:14:57.888: E/AndroidRuntime(5650): at android.os.Looper.loop(Looper.java:136)
09-07 15:14:57.888: E/AndroidRuntime(5650): at android.app.ActivityThread.main(ActivityThread.java:5479)
09-07 15:14:57.888: E/AndroidRuntime(5650): at java.lang.reflect.Method.invokeNative(Native Method)
09-07 15:14:57.888: E/AndroidRuntime(5650): at java.lang.reflect.Method.invoke(Method.java:515)
09-07 15:14:57.888: E/AndroidRuntime(5650): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
09-07 15:14:57.888: E/AndroidRuntime(5650): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
09-07 15:14:57.888: E/AndroidRuntime(5650): at dalvik.system.NativeStart.main(Native Method)
好的,实际问题是这样的: 此错误仅出现在 Eclipse 中,而不出现在 Android Studio 中。
我认为可能有用的其他细节: MinSdk:15,targetSdk:23,maxSdk:23;
我将发布可能需要的所有其他详细信息。
非常感谢。
编辑: 第 44 行是:
label.setText(getItem(position).getName());
【问题讨论】:
-
你不需要返回视图而不是标签吗?
-
第 44 行是什么?您是否尝试返回 convertView 而不是标签?
-
为什么你返回 label 而不是 convertView?
-
将尝试返回转换视图并更新问题。奇怪,因为这不是 Android Studio 的问题。
-
遗憾的是,返回 convertView 并不能解决问题...
标签: java android eclipse android-studio android-spinner