Android开发中使用Spinner控件出现的问题

在Android开发中,使用Spinner进行联动操作时遇到构造方法错误。错误出现在`ArrayAdapter`的实例化过程中,错误提示为`The constructor ArrayAdapter<CharSequence>(MainActivity.spinnerliandong, int, String[]) is undefined`。解决方法是将`this`替换为`MainActivity.this`,即`adadata=new ArrayAdapter<CharSequence>(MainActivity.this, android.R.layout.simple_spinner_item, MainActivity.this.aredata[arg2]);`,确保传入正确的Context。" 9360621,1450533,成都东软OJ C语言编程题,"['C语言', '编程挑战', '在线编程', '东软OJ', '字符处理']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们在开发Android程序的时候,使用Spinner控件做联动操作的时候,总是提示所用的方法不对。下面先来看看吧

private Spinner citySpinner=null;
 private Spinner areaSpinner=null;
 private String[][] aredata=new String[][] {
   {"东城","西城","朝阳","大兴"},
   {"上海","浦东"},
   {"苏州","吴中","新区"},
   {"广州","天河"}
 };
 private ArrayAdapter<CharSequence> adadata=null;
 
 /* (non-Javadoc)
  * 联动选择
  */
 @Override
 protected void onCreate(Bundle savedInstanceState)
 {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  citySpinner = (Spinner) findViewById(R.id.city);
  areaSpinner=(Spinner)findViewById(R.id.area);
  citySpinner.setOnItemSelectedListener(new spinnerliandong());
 }
 
 private class spinnerliandong implements OnItemSelectedListener{

  @Override//当选择了某一项之后,联动产生选项
  public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3)
  {
   // TODO Auto-generated method stub
   adadata=new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item, MainActivity.this.aredata[arg2]);
  }

  @Override
  public void onNothingSelected(AdapterView<?> arg0)
  {
   // TODO Auto-generated method stub
   
  }
  
 }

上面的红色部分总是会提示错误:The constructor ArrayAdapter<CharSequence>(MainActivity.spinnerliandong, int, String[]) is undefined

我们先来看看这个构造方法的原型吧:

public ArrayAdapter(Context context, int textViewResourceId, T[] objects)
Added in API level 1

Constructor

Parameters
contextThe current context.
textViewResourceIdThe resource ID for a layout file containing a TextView to use when instantiating views.
objectsThe objects to represent in the ListView.

注意到了,Context context这个是指整个你的Activity类,是不能用this这样简单的代替的。那我们就改一下吧:

adadata=new ArrayAdapter<CharSequence>(MainActivity.this, android.R.layout.simple_spinner_item, MainActivity.this.aredata[arg2]);

改成蓝色的这样就OK了 Acticity类.this

这样就不会再提示错误 了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值