在扩展的Spinner视图上设置下拉模式

时间:2014-09-25 13:00:23

标签: java android drop-down-menu android-spinner

我正在扩展微调器以添加一些功能,我试图使微调器成为下拉而不是对话框。所以我正在改变微调模式下降。

当我使用这个构造函数时,我得到一个异常

<mypackage.mypackage.MultiSelectionSpinner
                    android:id="@+id/my_spinner"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:spinnerMode="dropdown"
                    android:layout_weight="1"
                    android:padding="10dp" />


mySpinner = (MultiSelectionSpinner) findViewById(R.id.my_spinner);

public class MultiSelectionSpinner extends Spinner{
    public MultiSelectionSpinner(Context context, AttributeSet attrs,int defStyle,int mode) {
        super(context, attrs,defStyle,mode);
        simple_adapter = new CustomerMultiSelectionSpinnerAdapter(context,
                R.layout.customer_spinner_adapter_view, new ArrayList<String>() );
        ...
    }
  

引起:android.view.InflateException:二进制XML文件行#101:   在mypackage.mypackage.MultiSelectionSpinner类中输出错误   android.view.LayoutInflater.createView(LayoutInflater.java:603)at   android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)     在android.view.LayoutInflater.rInflate(LayoutInflater.java:755)at   android.view.LayoutInflater.rInflate(LayoutInflater.java:758)at   android.view.LayoutInflater.rInflate(LayoutInflater.java:758)at   android.view.LayoutInflater.rInflate(LayoutInflater.java:758)at   android.view.LayoutInflater.rInflate(LayoutInflater.java:758)at   android.view.LayoutInflater.inflate(LayoutInflater.java:492)at   de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(母语   方法)at   de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:631)     在android.view.LayoutInflater.inflate(Native Method)中   android.view.LayoutInflater.inflate(LayoutInflater.java:397)at   android.view.LayoutInflater.inflate(LayoutInflater.java:353)at   com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:320)     在android.app.Activity.setContentView(Activity.java:1895)at   android.support.v7.app.ActionBarActivity.superSetContentView(ActionBarActivity.java:217)     在   android.support.v7.app.ActionBarActivityDelegateICS.setContentView(ActionBarActivityDelegateICS.java:110)     在   android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:77)      at mypackage.mypackage.MainActivity.onCreate(MainActivity.java:63)(基本上是声明mySpinner =(MultiSelectionSpinner)findViewById(R.id.my_spinner);)   android.app.Activity.performCreate(Activity.java:5133)at   android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)     在   android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2293)     ... 12更多引起:java.lang.NoSuchMethodException:   [类android.content.Context,接口android.util.AttributeSet]     在java.lang.Class.getConstructorOrMethod(Class.java:423)at   java.lang.Class.getConstructor(Class.java:397)at   android.view.LayoutInflater.createView(LayoutInflater.java:568)...   还有33个

然而,除了微调器处于对话模式

之外,这很有效
public MultiSelectionSpinner(Context context, AttributeSet attrs) {
    super(context, attrs);
    simple_adapter = new CustomerMultiSelectionSpinnerAdapter(context,
            R.layout.customer_spinner_adapter_view, new ArrayList<String>() );
    super.setAdapter(simple_adapter);
}

1 个答案:

答案 0 :(得分:0)

您的spinner xml文件中的第101行似乎有错误。检查是否所有设置都正确。