使用标签从传感器列表中选择Android动态onClick按钮

时间:2013-10-12 21:54:51

标签: android button dynamic tags sensor

很抱歉再次询问,但我无法在传感器列表中为动态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();
    }
}

1 个答案:

答案 0 :(得分:0)

您无法将字符串与==进行比较。 Strings是对象,==测试两个对象引用是否是同一个对象。

您需要equals()来比较字符串值。

 if ((tag.equals("Goldfish 3-axis Magnetic field sensor"))

对于技术(极客)的好奇心,== 可能工作 - 有时 - 由于string interning,并且当{{1}时使用它时会导致一些模糊的错误应该使用。