我正在尝试Spinner
在我的代码中扩展 Android 类以实现一个新功能,但由于某种原因这不起作用。
这是扩展类:
import android.content.Context;
import android.widget.AdapterView;
import android.widget.Spinner;
public class CustomSpinner extends Spinner {
public CustomSpinner(Context context) {
super(context);
}
public void setSelectionByItemId(AdapterView<?> parent, long id){
for (int i = 0; i < parent.getCount(); i++) {
long itemIdAtPosition = parent.getItemIdAtPosition(i);
if (itemIdAtPosition == id) {
parent.setSelection(i);
break;
}
}
}
}
这就是我实例化这个类的方式:
CustomSpinner spinner = (CustomSpinner) findViewById(R.id.sphofentries);
这在运行时给我一个错误。
所有这一切都是如果R.id.sphofentries
在我的布局中声明为微调器。
但是现在,如果我将 Layout 设置为 Activity 时,我会收到运行时错误sphofentries
:CustomSpinner
setContentView(R.layout.settings);
另外我很确定问题是我需要声明sphofentries
为 aCustomSpinner
因为如果我这样做:
CustomSpinner spinner = new CustomSpinner(this);
spinner = (CustomSpinner) findViewById(R.id.sphofentries);
这在第一行没有问题,但在第二行给出了运行时错误,然后问题不是创建一个新的CustomSpinner
而是sphofentries
在 this 中设置CustomSpinner
(Thissphofentries
声明为 a Spinner
not a CustomSpinner
)。
也许我在布局中做错了什么,这就是我声明sphofentries
为的方式CustomSpinner
:
<CustomSpinner
android:id="@+id/sphofentries"
android:layout_below="@+id/tvhofentries"
android:layout_width="300dip"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
/>