Разработчик Android: как узнать, какой EditText вызывает контекстное меню - PullRequest
0 голосов
/ 20 сентября 2011

У меня есть 3 EditText, определенных в файле XML.Используя код, как мне узнать, какой из этих EditText вызывает контекстное меню?

По сути, мне нужно иметь «Справка» и «Установить по умолчанию» для каждого EditText.Я могу сделать так, чтобы контекстное меню было одинаковым для каждого элемента, но не разным для каждого элемента.Вот кодКонкретный вопрос в методе ContextChoice.Случай 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;
}

Надеюсьэто понятноСпасибо за помощь.

Ответы [ 2 ]

2 голосов
/ 20 сентября 2011
@Override
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo)
{
    super.onCreateContextMenu(menu, view, menuInfo);
    CreateContext(menu);
}

В этом случае параметром view является View (и, следовательно, EditText), для которого было вызвано контекстное меню. Подробнее

0 голосов
/ 19 декабря 2013
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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...