设置Spinner崩溃布局的选择
我有一个相当简单的布局,其中有一个Spinner
,它有我自己的适配器连接到它。设置Spinner崩溃布局的选择
MyAdapter myAdap = new MyAdapter();
mySpinner.setAdapter(myAdap);
适配器有(从调试器)两个项目:
myAdap.getCount() = 2
当我选择设置为1
虽然(0
作品),
mySpinner.setSelection(1);
应用程序崩溃:
10-05 19:37:17.122 19899-19899/nl.example.demo E/test: Exception 10-05 19:37:17.142 19899-19899/nl.example.demo E/AndroidRuntime: FATAL EXCEPTION: main
10-05 19:37:17.142 19899-19899/nl.example.demo E/AndroidRuntime: Process: example.demo, PID: 19899 10-05 19:37:17.142 19899-19899/nl.example.demo E/AndroidRuntime: java.lang.NullPointerException
10-05 19:37:17.142 19899-19899/nl.example.demo E/AndroidRuntime: at android.widget.TextView.makeNewLayout(TextView.java:6151)
10-05 19:37:17.142 19899-19899/nl.example.demo E/AndroidRuntime: at android.widget.TextView.onMeasure(TextView.java:6427)
10-05 19:37:17.142 19899-19899/nl.example.demo E/AndroidRuntime: at android.view.View.measure(View.java:16643)
[..]
奇怪的是,这是适用于具有相同版本的Android的另一部手机,但屏幕较小。
MyAdapter
如下:
public class MyAdapter extends ArrayAdapter<String> {
static ArrayList<String> methods = null;
private LayoutInflater mInflater;
public MyAdapter(Context ctx) {
super(ctx, 0);
mInflater = LayoutInflater.from(ctx);
if (methods == null) {
methods = new ArrayList<String>();
methods.add("1");
methods.add("2");
methods.add("3");
}
}
@Override
public int getCount() {
return methods.size();
}
@Override
public String getItem(int position) {
return methods.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(android.R.layout.simple_spinner_item, null);
}
TextView tvLabel = (TextView)convertView.findViewById(android.R.id.text1);
tvLabel.setText("test");
return convertView;
}
}
更新我的Nexus 6没有问题。
我认为你应该改变这样的代码:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(android.R.layout.simple_spinner_item, null);
TextView tvLabel = (TextView)convertView.findViewById(android.R.id.text1);
}else{
tvLabel.setText("test");
return convertView;}
}
为findViewById
当convertview为空只应调用。 您还错过了return convertview标记
你如何解释它可以在另一台屏幕尺寸较小的手机上工作? –
通知我编辑了我的回答, 至于屏幕大小,它会影响调用get view,我有几乎相同的问题,然后意识到视图回收是某些textview变为null或被回收的原因。 –
你也可以忘记回收视图像这里的自定义微调适配器的例子: http://*.com/questions/22593026/custom-spinner-adapter-not-working –
错误在您的'TextView'中,请分享您的MyAdapter类 –
@RahulParihar更新了我的问题 –
您确定这是Java吗? – Onik