如何在菜单项上单击事件?

时间:2012-11-06 22:02:22

标签: android android-layout menuitem

我正在输入TextBox中的所有数据,当我按下提交按钮它正在工作但我在Menuitem按钮上做同样的事情然后它不起作用。 我的代码是:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.i(TAG,"Information - onCreate() ...");
    setContentView(R.layout.activity_main);

    View promptButton = findViewById(R.id.submit_button);
    promptButton.setOnClickListener((OnClickListener) this);

}
public void onClick(View v) {
    RadioGroup radioGroup = (RadioGroup) findViewById(R.id.greetingsRadioGroup);
    int checkedRadioButton = radioGroup.getCheckedRadioButtonId();


    switch (checkedRadioButton) {
    case R.id.mrButton : 
      choice = "Mr.";
      break;
  case R.id.mrsButton : 
      choice = "Mrs.";
      break;
  case R.id.msButton: 
      choice = "Ms.";
      break;
  case R.id.drButton: 
      choice = "Dr.";
      break;
    }


         EditText namef = (EditText) findViewById(R.id.firstname); 
         EditText namel = (EditText) findViewById(R.id.lastname);  
         EditText add1 = (EditText) findViewById(R.id.address); 
         Spinner pro1 = (Spinner) findViewById(R.id.spinner1);  
         EditText coun1 = (EditText) findViewById(R.id.country);  
         EditText pcode1 = (EditText) findViewById(R.id.postalCode); 

            switch(v.getId()){
                case R.id.submit_button:
                    Intent j = new Intent(this, Animation.class);
                    fname = namef.getText().toString();
                    lname = namel.getText().toString();
                    add = add1.getText().toString();
                    pro = pro1.getSelectedItem().toString();
                    coun = coun1.getText().toString();
                    pcode = pcode1.getText().toString();
                    j.putExtra("choice", choice);
                    j.putExtra("fname", fname);
                    j.putExtra("lname", lname);
                    j.putExtra("add", add);
                    j.putExtra("pro", pro);
                    j.putExtra("coun", coun);
                    j.putExtra("pcode", pcode);
                    startActivity(j);
                    break;  
                case R.id.menu_anim:
                    Intent k = new Intent(this, Animation.class);
                    fname = namef.getText().toString();
                    lname = namel.getText().toString();
                    add = add1.getText().toString();
                    pro = pro1.getSelectedItem().toString();
                    coun = coun1.getText().toString();
                    pcode = pcode1.getText().toString();
                    k.putExtra("choice", choice);
                    k.putExtra("fname", fname);
                    k.putExtra("lname", lname);
                    k.putExtra("add", add);
                    k.putExtra("pro", pro);
                    k.putExtra("coun", coun);
                    k.putExtra("pcode", pcode);
                    startActivity(k);
                    break;

         }


    }
}


protected void onActivityResult(int requestCode, int resultCode, Intent d1) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, d1);

    if(requestCode == START)
    {
        Toast.makeText(this, "Your download has resumed.", Toast.LENGTH_LONG).show();
    }
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {

   super.onCreateOptionsMenu(menu);

    this.myMenu = menu;

    MenuInflater mi = this.getMenuInflater();
    mi.inflate(R.menu.my_menu,menu);

    return true;
}

我不知道我能在这个switch Case R.id.menu_anim ...

中写些什么

我可以拨打onClick(View v)吗? 如果是,我怎么称呼它?

private boolean handleMenus(MenuItem item)
{
    switch (item.getItemId()) {
    case R.id.menu_anim:

        break;
    }

return true;
}

2 个答案:

答案 0 :(得分:2)

以下是如何创建OptionMenu并在菜单项上具有ClickAction的示例:

// for Menu
private static final int SETTING_ID = Menu.FIRST;
private static final int EXISTING_GAMES_ID = Menu.FIRST + 1;
private static final int GAME_SELECTION_ID = Menu.FIRST + 2;


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);

    menu.add(0, SETTING_ID, 0, "settings");
    menu.add(0, EXISTING_GAMES_ID, 0, "existing games");
    menu.add(0, GAME_SELECTION_ID, 0, "new game");
    /****   Is this the mechanism to extend with filter effects?
    Intent intent = new Intent(null, getIntent().getData());
    intent.addCategory(Intent.CATEGORY_ALTERNATIVE);
    menu.addIntentOptions(
                          Menu.ALTERNATIVE, 0,
                          new ComponentName(this, NotesList.class),
                          null, intent, 0, null);
    *****/
    return true;
}

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    super.onPrepareOptionsMenu(menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
   /* mPaint.setXfermode(null);
    mPaint.setAlpha(0xFF);*/

    switch (item.getItemId()) {
        case SETTING_ID:
            //Do Some Task

            return true;
        case EXISTING_GAMES_ID:
            //Do Some Task
            return true;
        case GAME_SELECTION_ID:
            //Do Some Task
            return true;

    }
    return super.onOptionsItemSelected(item);
}

答案 1 :(得分:0)

static final int MY_ITEM = 0x0;

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    super.onCreateOptionsMenu(menu);

    menu.add(0, MY_ITEM, 0, "My Item");
    return true;
}

@Override
public boolean onOptionsItemSelected (MenuItem item)
{
    super.onOptionsItemSelected(item);
    switch(item.getItemId())
    {
    case MY_ITEM:
      //code goes here;
      break;
    }

    return true;
}

source