2012-01-07 47 views
0

我有一个空白按钮,我想在其中指定名称,颜色和存储日期 - 当用户长按该按钮时全部都是。我希望能得到一些指导。调用其他菜单的上下文菜单

  1. 从ContextMenu开始是正确的事情吗?
  2. 从ContextMenu中,我可以调用其他弹出式菜单 (如名称的EditText视图,日期的日期选择器和 颜色的颜色选择器)?

从上下文菜单中的这种子菜单invokation的任何指导表示赞赏。或者,如果我将错误的哲学分配给按钮的名称,颜色和日期,请提供其他技巧。

谢谢。

回答

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 

编辑:要显示一个日期选择器只需创建一个dialogDate选择器,并在上下文菜单中的开关语句添加

showDialog(DATE_DIALOG_ID); 

..

这里是你如何创建一个日期选择器对话框

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 2012-01-07 16:50:40

+0

当然可以。查看我的编辑。 – 2012-01-07 18:57:39

+0

太好了,谢谢。我不确定这是如何工作的,但如果你认为我的问题很好,请投票支持。 – aez 2012-01-07 19:20:30