82

Menü Öğesi tıklatıldığında yeni bir etkinlik başlatan bir niyet oluşturmak istiyorum, ancak bunu nasıl yapacağımı bilmiyorum. Android belgelerini okudum, fakat uygulamam doğru değil ... ve doğru yönde bir miktar rehberlik yardımcı olacaktır. Kodumu aşağıda listeledim ve sorunlu bölgelerimi yorumladım, yanlış yöntemi çağırdığımı düşünüyorum.Menü Öğesinin Kullanılması Olayı Tıklayın - 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); 
    } 

} 
menüsü oluşturmak için

cevap

220

basit kod .. Daha fazla ayrıntı için

@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); 
    } 
} 

seçilen menü için

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

basit kod linki aşağıda gitmek ..

Link1

Link2

+0

için çalışma android mu: Ben XML o koyduğunuz zaman onClick bu durumda çalışmaz öznitelik? (Burada çok yeni başlayan Android programcısı) – FateNuller

+0

@FateNuller onClick içerideki seçenekler menüsü için XML çalışmayacaktı, paftalar için işe yarayacaktı. OnOptionsItemSelected içinde eylem çubuğu seçenek menüsünü tıklatmalısınız. – Marko

+0

Basit ve ayık ... !!! –

4

Menü öğeleri dosya görünüyor

gibi

res/menü/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> 

Java kodu

src gibi/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); 
    } 

Ve eklemek görünüyor AndroidManifest.xml dosyanıza aşağıdaki kodu

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

Umarım size yardımcı olacaktır.

6

Ekleme sonrasında Kod

@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

Bu kod benim

@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); 
} 
İlgili konular