2012-01-07 2 views
0

У меня есть пустая кнопка, на которой я хотел бы назначить имя, цвет и сохранить дату - все, когда пользователь долго нажимает эту кнопку. Я был бы признателен за некоторые указания.Контекстное меню, которое вызывает другие меню

  1. Действительно ли с ContextMenu правильная вещь?
  2. Из контекстного меню можно вызвать другие всплывающие меню как вид EditText для имени, даты для выбора даты и цветной выбор цвета?

Любое руководство по этому виду подзаконного вызова из контекстного меню приветствуется. Или, если у меня неправильная философия для присвоения имени, цвета и даты кнопке, пожалуйста, предложите другую технику.

спасибо.

ответ

0

Для кнопки длительного нажмите все, что нужно будет сделать, это

down.setOnLongClickListener(new OnLongClickListener() { 
    @Override 
    public boolean onLongClick(View v) { 
     // TODO Auto-generated method stub 
     return true; 
    } 
}); 

Затем создать контекстное меню, которое нужно будет создать ресурс меню.

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:id="@+id/new_game" 
     android:icon="@drawable/ic_new_game" 
     android:title="@string/new_game" /> 
<item android:id="@+id/help" 
     android:icon="@drawable/ic_help" 
     android:title="@string/help" /> 
</menu> 

Тогда в вашей деятельности переопределить этот метод и надуть контекстное меню

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, 
          ContextMenuInfo menuInfo) { 
super.onCreateContextMenu(menu, v, menuInfo); 
MenuInflater inflater = getMenuInflater(); 
inflater.inflate(R.menu.context_menu, menu); 
} 

Это, как вы захватить какой элемент был выбран и действовать соответствующим образом к нему

@Override 
public boolean onContextItemSelected(MenuItem item) { 
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); 
switch (item.getItemId()) { 
case R.id.edit: 
editNote(info.id); 
return true; 
case R.id.delete: 
deleteNote(info.id); 
return true; 
default: 
return super.onContextItemSelected(item); 
} 
} 

Теперь вам do регистрирует вашу кнопку для контекстного меню при длительном нажатии следующим образом.

registerForContextMenu(down); //Your button 

EDIT: Для того, чтобы показать выбор даты просто создать палитру dialogDate и добавить

showDialog(DATE_DIALOG_ID); 

в распределительном заявлении контекстного меню ..

Вот как создать диалог Datepicker

private TextView mDateDisplay; 
private Button mPickDate; 
private int mYear; 
private int mMonth; 
private int mDay; 

static final int DATE_DIALOG_ID = 0; 
// get the current date 
    final Calendar c = Calendar.getInstance(); 
    mYear = c.get(Calendar.YEAR); 
    mMonth = c.get(Calendar.MONTH); 
    mDay = c.get(Calendar.DAY_OF_MONTH); 

// the callback received when the user "sets" the date in the dialog 
private DatePickerDialog.OnDateSetListener mDateSetListener = 
     new DatePickerDialog.OnDateSetListener() { 

      public void onDateSet(DatePicker view, int year, 
            int monthOfYear, int dayOfMonth) { 
       mYear = year; 
       mMonth = monthOfYear; 
       mDay = dayOfMonth; 

      } 
     }; 

@Override 
protected Dialog onCreateDialog(int id) { 
switch (id) { 
case DATE_DIALOG_ID: 
    return new DatePickerDialog(this, 
       mDateSetListener, 
       mYear, mMonth, mDay); 
} 
return null; 

+0

Thanks @ coder_For_Life22. Можете ли вы показать некоторый код скелета о том, как можно вызвать, скажем, средство выбора даты, когда выбран один из элементов контекста? – aez

+0

Sure..Проверьте мое редактирование. –

+0

Отлично, спасибо. Я не уверен, как это работает, но если вы думаете, что мой вопрос хороший, добросердечно проголосуйте за него. – aez

Смежные вопросы