Android开发人员:如何找出哪个EditText正在调用上下文菜单
我在XML文件中定义了3个EditText。使用代码,我如何找出哪些EditText正在调用上下文菜单 基本上,我需要为每个EditText提供“帮助”和“设置为默认值”。我可以让每个项目的上下文菜单相同,但每个项目没有不同。这是代码。具体问题在上下文选择方法中。案例0为帮助,案例1设置为默认值。在每种情况下,我如何找出哪个EditText调用上下文菜单,以便设置不同的帮助和默认值,而不是同时设置所有帮助和默认值Android开发人员:如何找出哪个EditText正在调用上下文菜单,android,contextmenu,Android,Contextmenu,我在XML文件中定义了3个EditText。使用代码,我如何找出哪些EditText正在调用上下文菜单 基本上,我需要为每个EditText提供“帮助”和“设置为默认值”。我可以让每个项目的上下文菜单相同,但每个项目没有不同。这是代码。具体问题在上下文选择方法中。案例0为帮助,案例1设置为默认值。在每种情况下,我如何找出哪个EditText调用上下文菜单,以便设置不同的帮助和默认值,而不是同时设置所有帮助和默认值 @Override public void onCreate(Bundle sav
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.updatedata);
wNum = (EditText) findViewById(R.id.wNum);
wNum.setOnCreateContextMenuListener(this);
fName = (EditText) findViewById(R.id.fName);
fName.setOnCreateContextMenuListener(this);
lName = (EditText) findViewById(R.id.lName);
lName.setOnCreateContextMenuListener(this);
Button Save = (Button) findViewById(R.id.Save);
Button Cancel = (Button) findViewById(R.id.Cancel);
Save.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
Toast.makeText(getBaseContext(), wNum.getText().toString() + "\n" + fName.getText().toString() + " " + lName.getText().toString() + "\n Your info has been saved.", Toast.LENGTH_LONG).show();
}
});
Cancel.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
Toast.makeText(getBaseContext(), "Cancelled", Toast.LENGTH_SHORT).show();
finish();
}
});
this.registerForContextMenu(wNum);
this.registerForContextMenu(fName);
this.registerForContextMenu(lName);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo)
{
super.onCreateContextMenu(menu, view, menuInfo);
CreateContext(menu);
}
@Override
public boolean onContextItemSelected(MenuItem item)
{
return ContextChoice(item);
}
private void CreateContext(Menu menu)
{
MenuItem mnu1 = menu.add(0,0,0,"Help");
MenuItem mnu2 = menu.add(0,1,1,"Set To Default");
}
private boolean ContextChoice(MenuItem item)
{
switch(item.getItemId())
{
case 0:
showDialog(0);
return true;
case 1:
wNum.setText("w99999999");
fName.setText("Bob");
lName.setText("Frank");
return true;
}
return false;
}
我希望这是清楚的。谢谢你的帮助
@Override
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo)
{
super.onCreateContextMenu(menu, view, menuInfo);
CreateContext(menu);
}
在这种情况下,视图
参数是调用contextmenu的视图
(因此编辑文本
)。
Dang,与我所希望的相比,我将不得不采取一种有点不干净的方式,但这是可行的。非常感谢。一般来说,最好解释在发布大块代码时所做的工作。
int selectedView; // declare a variable selectedview
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
registerForContextMenu(btnPD);
registerForContextMenu(btnMD); //apply same contextMenu to multiple views
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("Set Appropriate Name");
menu.add(0, v.getId(), 0, "Rename"); //contextMenu Item
switch(v.getId()) //identify Which view is calling context menu and change selectedview value as below:
{
case R.id.btnpointData:
selectedView=1;
break;
case R.id.btnMapRecord:
selectedView=2;
break;
}
}
@Override
public boolean onContextItemSelected(MenuItem item) {
if (item.getTitle() == "Rename") {
Intent i = new Intent(this, ChangeNamesUsingDialogBox.class);
startActivityForResult(i, 1);
}
return super.onContextItemSelected(item);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
if (data == null) {
return;
}
String name = data.getStringExtra("name");
if (selectedView==1) //use selectedview identifier to act accordingly.
btnPD.setText(name);
if(selectedView==2)
btnMD.setText(name);
super.onActivityResult(requestCode, resultCode, data);
}