我希望button1,2,3响应一个longclick,用户将提示输入文本的按钮。 在onCreate里面我写道:
Button botonEditable;
Context context;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
context = MainActivity.this;
Resources r = getResources();
String pName = getPackageName();
for (int i=1;i<4;i++){
botonEditable = (Button) findViewById(r.getIdentifier("button" + i, "id", pName));
botonEditable.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v) {
final AlertDialog.Builder alert = new AlertDialog.Builder(context);
alert.setMessage("Nueva Categoria:");
final EditText input = new EditText(context);
alert.setView(input);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton ) {
// Do something with value!
String newCateg = input.getText().toString();
botonEditable.setText(newCateg);
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// Canceled.
}
});
alert.show();
return true;
}
});
}
}
当测试时,3个按钮会相应地响应以显示警告消息,但是当我输入文本并单击“确定”时,只有在按钮3中更改文本,无论哪个按钮已被长按:( 什么是错的以及如何以简单的方式解决它?
答案 0 :(得分:1)
试试这个
button.setOnLongClickListener(new longClcik());
class longClcik implements OnLongClickListener {
public boolean onLongClick(View v) {
return false;
}
}
答案 1 :(得分:1)
试试这个..替换以下代码
public void onClick(DialogInterface dialog, int whichButton ) {
// Do something with value!
String newCateg = input.getText().toString();
botonEditable.setText(newCateg);
}
带
public void onClick(DialogInterface dialog, int whichButton ) {
// Do something with value!
String newCateg = input.getText().toString();
((Button)v).setText(newCateg);
}
答案 2 :(得分:1)
您应该使用传递给View
的{{1}}。这将为您提供当前单击的视图并更新其值,因此请执行此操作
OnLongClickListener
答案 3 :(得分:0)
我找到了解决方案,在我的代码中我刚刚替换了行
public boolean onLongClick(View v) {....
这一个
public boolean onLongClick(final View v) {....
加上你的建议:
((Button)v).setText(newCateg.toUpperCase());
现在,一切都很好。 谢谢你们,你的帮助让我以毫米为单位解决了这个问题 :)
答案 4 :(得分:0)
我这样做:
第二个方法onLongClick
@覆盖
public boolean onLongClick(查看v){
(ⅴ)onCheckboxLongClicked;
返回true;
}
创建方法onCheckBoxLongClicked,这是无效的。或者你可以在onLongClick上实现你的开关
开关(view.getId()){
案例R.id.cbDigits:
Toast.makeText(getActivity(),“Message”,Toast.LENGTH_SHORT)。show();
打破;
。
。
。
}
很抱歉,但我仍然不知道如何格式化代码以缩进...