使用 Spinner 时出错 Class

Error in using Spinner Class

package com.example.acer.spinner;

import android.app.Activity;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.support.v7.internal.widget.AdapterViewCompat;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;


public  class MainActivity extends Activity implements AdapterViewCompat.OnItemSelectedListener        {

Spinner s,d;
String source[]={"kc","tc"};
String destination[]={"kc","tc"};
TextView t;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    s=(Spinner) findViewById(R.id.spinner1);
    d=(Spinner) findViewById(R.id.spinner2);
    t=(TextView) findViewById(R.id.tv);
    ArrayAdapter<String> so = new ArrayAdapter(this,android.R.layout.simple_spinner_item,source);
    s.setAdapter(so);
    ArrayAdapter<String> de = new ArrayAdapter(this,android.R.layout.simple_spinner_item,destination);
    d.setAdapter(de);

    s.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            position=s.getSelectedItemPosition();
            t.setText("" +position);
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });
}
}

这个程序不可执行,因为据说 class MainActivity 必须抽象或实现 OnNothingSelected 方法?为什么会这样? 但是,在class抽象时,应用程序不是运行。 应该做出哪些改变?

你还没有实现抽象的方法class"AdapterViewCompat"

@Override
    public void onItemSelected(AdapterViewCompat<?> adapterViewCompat, View view, int i, long l) {

    }

    @Override
    public void onNothingSelected(AdapterViewCompat<?> adapterViewCompat) {

    }

两种解决方法:

    package com.example.acer.spinner;

import android.app.Activity;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.support.v7.internal.widget.AdapterViewCompat;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;


public  class MainActivity extends Activity    {

Spinner s,d;
String source[]={"kc","tc"};
String destination[]={"kc","tc"};
TextView t;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    s=(Spinner) findViewById(R.id.spinner1);
    d=(Spinner) findViewById(R.id.spinner2);
    t=(TextView) findViewById(R.id.tv);
    ArrayAdapter<String> so = new ArrayAdapter(this,android.R.layout.simple_spinner_item,source);
    s.setAdapter(so);
    ArrayAdapter<String> de = new ArrayAdapter(this,android.R.layout.simple_spinner_item,destination);
    d.setAdapter(de);

    s.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            position=s.getSelectedItemPosition();
            t.setText("" +position);
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });
}
}

第二个:

    package com.example.acer.spinner;

    import android.app.Activity;
    import android.support.v7.app.ActionBarActivity;
    import android.os.Bundle;
    import android.support.v7.internal.widget.AdapterViewCompat;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.Spinner;
    import android.widget.TextView;


    public  class MainActivity extends Activity implements AdapterViewCompat.OnItemSelectedListener        {

    Spinner s,d;
    String source[]={"kc","tc"};
    String destination[]={"kc","tc"};
    TextView t;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        s=(Spinner) findViewById(R.id.spinner1);
        d=(Spinner) findViewById(R.id.spinner2);
        t=(TextView) findViewById(R.id.tv);
        ArrayAdapter<String> so = new ArrayAdapter(this,android.R.layout.simple_spinner_item,source);
        s.setAdapter(so);
        ArrayAdapter<String> de = new ArrayAdapter(this,android.R.layout.simple_spinner_item,destination);
        d.setAdapter(de);

        s.setOnItemSelectedListener(this);
    }
        @Override
        public void onItemSelected(AdapterViewCompat<?> adapterViewCompat, View view, int i, long l) {
        if(view.getId()==R.id.spinner1){
                position=s.getSelectedItemPosition();
                t.setText("" +position);

}

        }

        @Override
        public void onNothingSelected(AdapterViewCompat<?> adapterViewCompat) {

        }
    }

从您的 MainActivity class 中删除您的 AdapterViewCompat.OnItemSelectedListener 实现。 之前:

public  class MainActivity extends Activity implements AdapterViewCompat.OnItemSelectedListener

之后:

public  class MainActivity extends Activity