82

메뉴 항목을 클릭하면 새 활동을 시작하는 인 텐트를 만들고 싶지만 어떻게해야할지 모르겠습니다. 나는 안드로이드 문서를 통해 읽었지만, 내 구현이 올바르지 않다. 올바른 지침이 도움이 될 것이다. 내가 아래에 내 코드를 나열하고 내 문제 영역을 주석, 내가 잘못된 방법을 호출하는 것 같아요.메뉴 항목 처리 이벤트 - Android

package com.jbsoft.SimpleFlashlight; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.*; 
import android.view.MenuItem.OnMenuItemClickListener; 
import android.widget.Button; 
import android.widget.Toast; 

public class SimpleFlashLightActivity extends Activity { 


    Button GreenButton; // Declare instances of buttons to use later 
    Button BlueButton; 

    private static final int OK_MENU_ITEM = Menu.FIRST; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    BlueButton = (Button) findViewById(R.id.bluebutton); 
    BlueButton.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 

     //Display msg when user clicks Blue Button 
     showColorChangeMsg(); 

     // Switch Activities on click 
     Intent blueintent = new Intent(SimpleFlashLightActivity.this, 
             BlueFlashLightActivity.class); 
     startActivity(blueintent); 

     } 
    }); 
    //Install listener for second button 
    GreenButton = (Button) findViewById(R.id.greenbutton); 
    GreenButton.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 

     // Display msg when user clicks Green Button 
     showColorChangeMsg(); 

     Intent greenintent = new  Intent(SimpleFlashLightActivity.this, 
               GreenFlashLightActivty.class); 
     startActivity(greenintent); 

     } 
    }); 

    ; 

    /**************************************************************************************/ 

    // Method Declarations // THIS IS WHERE I'M HAVING A PROBLEM 

    MenuItem AddColorButton = (MenuItem)findViewById(R.id.menu_insert); 

    boolean onOptionsItemSelected(AddColorButton) { 
     Intent intent = new Intent(SimpleFlashLightActivity.this, 
            BlueFlashLightActivity.class); 
     startActivity(intent); 
     return true; 
     ; 
    }; 
    /****************************************************************************************/ 

    } 
    private void showColorChangeMsg() 
    { 
    Toast msgtoast = Toast.makeText(this.getBaseContext(), "SWITCH COLOR!", 
            Toast.LENGTH_LONG); 
    msgtoast.show(); 
    } 
    private void showMsg(String msg) { 
    Toast toast = Toast.makeText(this, msg, Toast.LENGTH_LONG); 
    toast.show(); 
    } 

    public boolean onCreateOptionsMenu(Menu menu) { 
    super.onCreateOptionsMenu(menu); 
    MenuInflater mi = getMenuInflater(); 
    mi.inflate(R.menu.list_menu, menu); 
    return true; 

    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case OK_MENU_ITEM: 
     showMsg("OK"); 
     break; 
    } 
    return super.onOptionsItemSelected(item); 
    } 

} 
메뉴를 생성

답변

220

간단한 코드 .. 더 상세히위한

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle item selection 
    switch (item.getItemId()) { 
    case R.id.new_game: 
     newGame(); 
     return true; 
    case R.id.help: 
     showHelp(); 
     return true; 
    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 

선택된 메뉴

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.game_menu, menu); 
    return true; 
} 

간단한 코드 링크 이하로 ..

Link1

Link2

+0

에 대한 작품은 안드로이드를합니까입니다 : 나는 XML에 그것을 넣어한다면 온 클릭이 경우 작동하지 속성? (매우 초보자 안드로이드 프로그래머가 여기에) – FateNuller

+0

@FateNuller 옵션 메뉴에 대한 XML 내부의 onClick 작동하지 않을 것이다, 그것은 레이아웃에 대해 작동합니다. onOptionsItemSelected 안에서 액션 바 옵션 메뉴 클릭을 처리해야합니다. – Marko

+0

간단하고 진지한 ... !!! –

4

메뉴 항목 파일을 보이는

같은

고해상도/메뉴/menu_main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    tools:context=".MainActivity"> 
    <item 
     android:id="@+id/settings" 
     android:title="Setting" 
     app:showAsAction="never" /> 
    <item 
     android:id="@+id/my_activity" 
     android:title="My Activity" 
     app:showAsAction="always" 
     android:icon="@android:drawable/btn_radio"/> 
</menu> 

자바 코드

SRC 같은/MainActivity.java

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int id = item.getItemId(); 

     if (id == R.id.my_activity) { 
      Intent intent1 = new Intent(this,MyActivity.class); 
      this.startActivity(intent1); 
      return true; 
     } 

     if (id == R.id.settings) { 
      Toast.makeText(this, "Setting", Toast.LENGTH_LONG).show(); 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

그리고 추가를 찾습니다 AndroidManifest.xml 파일에 다음 코드를 입력하십시오.

<activity 
      android:name=".MyActivity" 
      android:label="@string/app_name" > 
     </activity> 

도움이되기를 바랍니다.

6

추가 다음 코드

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case R.id.new_item: 
     Intent i = new Intent(this,SecondActivity.class); 
      this.startActivity(i); 
      return true; 
    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 
1

이 코드는 나를

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    int id = item.getItemId(); 

    if (id == R.id.action_settings) { 
    // add your action here that you want 
     return true; 
    } 

    else if (id==R.id.login) 
    { 
     // add your action here that you want 
    } 


    return super.onOptionsItemSelected(item); 
}