当前位置: 代码迷 >> Android >> 安卓 Spinner怎么继承一个子类
  详细解决方案

安卓 Spinner怎么继承一个子类

热度:8   发布时间:2016-04-28 04:27:58.0
安卓 Spinner如何继承一个子类
我想做个类继承于spinner ,不知道怎么做

public class MySpiner extends Spinner {

    public MySpiner(Context context) {
super(context);
// TODO Auto-generated constructor stub
}

private String[] items=  {"汉族", "傣族", "藏族", "苗族", "其他"};
    public static final int Nation=1;
private HashMap<String,String> nation=new HashMap<String, String>(); 
    
/**
 * 设置数据
 * @param opTpye  Spiner的类型  可以是 查询民族 或者 区域 等
 * @param context  上下文
 */
public void SetDataByOpTpye(int opTpye,Context context){

switch (opTpye) {
case Nation: //查询民族

ArrayAdapter<String> aa = new ArrayAdapter<String>(getContext(),android.R.layout.simple_spinner_item,items);
setAdapter(aa);
break;

default:
break;
}

}

}



public class RegisterActivity extends Activity {

private MySpiner Nation;
private String[] items=  {"汉族", "傣族", "藏族", "苗族", "其他"};

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.register);
Nation= (MySpiner) findViewById(R.id.NationText);
ArrayAdapter<String> aa = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,items);
Nation.setAdapter(aa);
//这个实现方法有问题的
// Nation.SetDataByOpTpye(MySpiner.Nation, this);

}


一执行 就报错了。


07-20 20:59:58.689: E/AndroidRuntime(1132): FATAL EXCEPTION: main
07-20 20:59:58.689: E/AndroidRuntime(1132): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mcscp/com.mcscp.RegisterActivity}: java.lang.ClassCastException: android.widget.Spinner cannot be cast to com.extendsClass.MySpiner
07-20 20:59:58.689: E/AndroidRuntime(1132):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
07-20 20:59:58.689: E/AndroidRuntime(1132):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
07-20 20:59:58.689: E/AndroidRuntime(1132):  at android.app.ActivityThread.access$600(ActivityThread.java:141)
07-20 20:59:58.689: E/AndroidRuntime(1132):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
07-20 20:59:58.689: E/AndroidRuntime(1132):  at android.os.Handler.dispatchMessage(Handler.java:99)
07-20 20:59:58.689: E/AndroidRuntime(1132):  at android.os.Looper.loop(Looper.java:137)
07-20 20:59:58.689: E/AndroidRuntime(1132):  at android.app.ActivityThread.main(ActivityThread.java:5103)
07-20 20:59:58.689: E/AndroidRuntime(1132):  at java.lang.reflect.Method.invokeNative(Native Method)
07-20 20:59:58.689: E/AndroidRuntime(1132):  at java.lang.reflect.Method.invoke(Method.java:525)
07-20 20:59:58.689: E/AndroidRuntime(1132):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
07-20 20:59:58.689: E/AndroidRuntime(1132):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
07-20 20:59:58.689: E/AndroidRuntime(1132):  at dalvik.system.NativeStart.main(Native Method)
07-20 20:59:58.689: E/AndroidRuntime(1132): Caused by: java.lang.ClassCastException: android.widget.Spinner cannot be cast to com.extendsClass.MySpiner
07-20 20:59:58.689: E/AndroidRuntime(1132):  at com.mcscp.RegisterActivity.onCreate(RegisterActivity.java:72)
07-20 20:59:58.689: E/AndroidRuntime(1132):  at android.app.Activity.performCreate(Activity.java:5133)
07-20 20:59:58.689: E/AndroidRuntime(1132):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
07-20 20:59:58.689: E/AndroidRuntime(1132):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
07-20 20:59:58.689: E/AndroidRuntime(1132):  ... 11 more

------解决方案--------------------
Nation= (MySpiner) findViewById(R.id.NationText);应该改为Nation= (Spinner) findViewById(R.id.NationText);