很抱歉再次询问,但我无法在传感器列表中为动态onClick按钮实现“标记”功能。
如您所见,我已根据传感器的类型选择了我的按钮标签,并相应地设置了标签。但是,当我尝试使用onClick函数时,它不起作用,向下滚动以查看它。该程序没有错误,当我按下按钮时,Toast没有出现。
我是否通过get标记正确实现了?
public class MainActivity extends Activity implements SensorEventListener, OnClickListener {
String tag;
TextView myTextView;
SensorManager mySensorManager;
TextView status;
String btn = "button";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mySensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
myTextView = (TextView) findViewById(R.id.text1);
List<Sensor> myList = mySensorManager.getSensorList(Sensor.TYPE_ALL);
LinearLayout layout = (LinearLayout) findViewById(R.id.linear_layout_tags);
for (int i = 1; i < myList.size(); i++) {
myTextView.append("\n" + myList.get(i).getName());
Button btnTag = new Button(this);
btnTag.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
btnTag.setText(myList.get(i).getName());
btnTag.setId(i);
btnTag.setTag(myList.get(i).getName());
layout.addView(btnTag);
((Button) findViewById(i)).setOnClickListener(this);
// btnTag.setOnClickListener(this);
}
Toast.makeText(MainActivity.this, "done", Toast.LENGTH_SHORT).show();
}
@Override
public void onClick(View v) {
tag = (String) v.getTag();
if (tag == "Goldfish 3-axis Magnetic field sensor")
{
Toast.makeText(MainActivity.this, "Button1 is Pressed", Toast.LENGTH_SHORT).show();
}
}
答案 0 :(得分:0)
您无法将字符串与==
进行比较。 Strings
是对象,==
测试两个对象引用是否是同一个对象。
您需要equals()
来比较字符串值。
if ((tag.equals("Goldfish 3-axis Magnetic field sensor"))
对于技术(极客)的好奇心,==
可能工作 - 有时 - 由于string interning,并且当{{1}时使用它时会导致一些模糊的错误应该使用。