我有一个10个按钮的活动,并转移有关按钮点击到下一个活动的信息。
View.OnLongClickListener olongBtn = new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
if (v == btn1) {
Intent intent = new Intent(MainActivity.this, AddContact.class);
intent.putExtra("slot", "slot1");
startActivity(intent);
} else if (v == btn2) {
Intent intent = new Intent(MainActivity.this, AddContact.class);
intent.putExtra("slot", "slot2");
startActivity(intent);
} else if (v == btn3) {
Intent intent = new Intent(MainActivity.this, AddContact.class);
intent.putExtra("slot", "slot3");
startActivity(intent);
}
return false;
}
};
btn1.setOnLongClickListener(olongBtn);
btn2.setOnLongClickListener(olongBtn);
btn3.setOnLongClickListener(olongBtn);
}
我想把它改成这样
String slot = toString(v);
Intent intent = new Intent(MainActivity.this, AddContact.class);
intent.putExtra("slot", slot);
startActivity(intent);
但当我这么做的时候,我会进入下一个活动,比如:
android.widget.Button{6548fcd}VFED..CL...P....17.0-147.130 #7f08004f app:id/btnPayman}
但我是按钮对象的名字。
6条答案
按热度按时间cfh9epnr1#
---编辑
jpfvwuh42#
--
当您使用include标记来组成布局时,您应该为每个按钮设置不同的id(同时设置按钮文本)。您还可以使用整数作为每个按钮的标记,并将该标记发送到下一个活动(而不是id)。
查看这里的视图标记:view settag()方法
rryofs0p3#
如果要发送按钮的名称,请尝试以下操作:
ndasle7k4#
您只需发送按钮id即可。
在下一个活动中,您可以使用开关来了解按下了哪个按钮:
发送int比发送字符串好,因为可以在接收器活动上使用比指定if/else更快的开关
baubqpgj5#
要获取已单击按钮的名称,请使用
((Button)v).getText()
方法而不是v.toString()
返回调用对象的字符串表示:ibps3vxo6#
感谢用户pozuelog提供解决方案。我将使用单独的xml文件进行布局,并通过include将其附加到主活动。
结果,getid方法对我不起作用。
解决方案是为我的按钮设置标签。
我认为这个解决方案可能是优化的,但我是googlecoder,现在就让它保持原样。