Android开发人员:如何找出哪个EditText正在调用上下文菜单

Android开发人员:如何找出哪个EditText正在调用上下文菜单,android,contextmenu,Android,Contextmenu,我在XML文件中定义了3个EditText。使用代码,我如何找出哪些EditText正在调用上下文菜单 基本上,我需要为每个EditText提供“帮助”和“设置为默认值”。我可以让每个项目的上下文菜单相同,但每个项目没有不同。这是代码。具体问题在上下文选择方法中。案例0为帮助,案例1设置为默认值。在每种情况下,我如何找出哪个EditText调用上下文菜单,以便设置不同的帮助和默认值,而不是同时设置所有帮助和默认值 @Override public void onCreate(Bundle sav

我在XML文件中定义了3个EditText。使用代码,我如何找出哪些EditText正在调用上下文菜单

基本上,我需要为每个EditText提供“帮助”和“设置为默认值”。我可以让每个项目的上下文菜单相同,但每个项目没有不同。这是代码。具体问题在上下文选择方法中。案例0为帮助,案例1设置为默认值。在每种情况下,我如何找出哪个EditText调用上下文菜单,以便设置不同的帮助和默认值,而不是同时设置所有帮助和默认值

@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);
}