使用 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
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