我刚刚开始使用Java编程,并且在为可点击的TextView实现OnClickListener开关案例时遇到了一些麻烦。我已经设法为菜单项做了一个开关案例,但我显然不能理解它足以构成更一般的案例。
这是我的代码中对它很重要的部分
public class MyActivity extends Activity implements SensorEventListener {
TextView tv, tv1, tv2, tv3;
@Override
public void onCreate(Bundle savedInstanceState) {
//get textviews
tv = (TextView) findViewById(R.id.xval);
tv1 = (TextView) findViewById(R.id.yval);
tv2 = (TextView) findViewById(R.id.zval);
tv3 = (TextView) findViewById(R.id.scalar);
然后我为每个TextView设置了单独的点击监听器,例如
tv1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Do things
}
}
});
但是我正在尝试设置它,所以我有一个组合的OnClickListener,如:
@Override
public boolean onClickListener (View v) {
switch (tv.findViewById()) {
case tv:
//Do things
return true;
case tv1:
//Do things
return true;
case tv2:
//Do things
return true;
case tv3:
//Do things
return true;
}}
我知道代码是非常错误的,但我似乎无法绕过它。我已经分配了我的findViewById,所以我不确定还有什么东西可以放入开关!
三江源!
答案 0 :(得分:3)
tv.setOnClickListener(this);
tv1.setOnClickListener(this);
tv2.setOnClickListener(this);
tv3.setOnClickListener(this);
@Override
public boolean onClick (View v) {
switch (v.getId()) {
case R.id.xval:
//Do things
return true;
case R.id.yval:
//Do things
return true;
case R.id.zval:
//Do things
return true;
case R.id.scalar:
//Do things
return true;
}}
答案 1 :(得分:3)
我会提供另一种答案。首先,您必须创建一个OnClickListener
,它将接收您的OnClick事件:
OnClickListener listener = new OnClickListener()
{
@Override
public void onClick(View v)
{
switch (v.getId())
{
case R.id.xval:
//code
break;
case R.id.yval:
//code
break;
case R.id.zval:
//code
break;
case R.id.scalar:
//code
break;
default:
break;
}
}
};
然后,您必须将该侦听器与您拥有的每个TextView
相关联:
tv.setOnClickListener(listener);
tv1.setOnClickListener(listener);
tv2.setOnClickListener(listener);
tv3.setOnClickListener(listener);
点击其中一个TextViews
后,系统会调用您的OnclickListener
onClick()
回调,并会检查您点击的TextView
ID并相应地运行代码,依赖于此案。
答案 2 :(得分:1)
创建一个侦听器,将其添加到所有TextView
。切换视图ID,这是一个简单的int
View.OnClickListener listener = new View.OnClickListener()
{
public void onClick(View v)
{
switch (v.getId()) {
case R.id.xval:
//Do things
return true;
case R.id.yval:
//Do things
return true;
case R.id.zval:
//Do things
return true;
case R.id.scalar:
//Do things
return true;
}
}
};
tv.setOnClickListener(listener);
tv1.setOnClickListener(listener);
tv2.setOnClickListener(listener);
tv3.setOnClickListener(listener);