মেনু আইটেমটি হ্যান্ডলিং ক্লিক ইভেন্ট - অ্যান্ড্রয়েড


123

আমি একটি অভিপ্রায় তৈরি করতে চাই যা একবার মেনু আইটেম ক্লিক হয়ে গেলে একটি নতুন ক্রিয়াকলাপ শুরু করে, তবে আমি কীভাবে এটি করব তা নিশ্চিত নই। আমি অ্যান্ড্রয়েড ডকুমেন্টেশনগুলি পড়েছি, তবে আমার বাস্তবায়ন সঠিক নয়..আর সঠিক দিকের কিছু দিকনির্দেশ সাহায্য করবে। আমি নীচে আমার কোডটি তালিকাভুক্ত করেছি এবং আমার সমস্যার ক্ষেত্রগুলি সম্পর্কে মন্তব্য করেছি, আমি মনে করি যে আমি ভুল পদ্ধতিটি গ্রহণ করছি।

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

}

উত্তর:


297

মেনু তৈরির জন্য সহজ কোড ..

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

মেনু জন্য সহজ কোড নির্বাচিত

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

বিস্তারিত জানতে লিঙ্কের নীচে যান ..

Link1

Link2


যদি অ্যান্ড্রয়েড: অনক্লিক অ্যাট্রিবিউট এই ক্ষেত্রে XML- এ রাখি তবে এই ক্ষেত্রে কাজ করে না? (এখানে খুব শিক্ষানবিস অ্যান্ড্রয়েড প্রোগ্রামার)
ফেটনুলার

অপশন মেনুর জন্য এক্সএফএমএল-এর ভিতরে ফেটনুলার অনক্লিক করুন, এটি লেআউটগুলির জন্য কাজ করবে। অপশনস আইটেমসিলেক্টেড এর ভিতরে আপনার অ্যাকশন বার অপশন মেনু ক্লিকগুলি পরিচালনা করতে হবে।
মার্কো

অবিচ্ছিন্ন অভিব্যক্তি প্রয়োজন। রিসোর্স আইডিগুলি অ্যান্ড্রয়েড লাইব্রেরি মডিউলগুলিতে স্যুইচ স্টেটমেন্টে কম ব্যবহার করা যায় না ... অ্যান্ড্রয়েড লাইব্রেরি মডিউলে একটি স্যুইচ বিবৃতিতে রিসোর্স আইডি ব্যবহার করে বৈধকরণ। রিসোর্স আইডি লাইব্রেরি প্রকল্পগুলিতে চূড়ান্ত নয় কারণ এসডিকে সরঞ্জামসমূহ r14, এর অর্থ গ্রন্থাগার কোড এই আইডিগুলিকে ধ্রুবক হিসাবে বিবেচনা করতে পারে না।
জোন

13

নিম্নলিখিত কোড যুক্ত করুন

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

5

মেনু আইটেম ফাইলের মত দেখাচ্ছে

মাঝামাঝি / মেনু / 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);
    }

এবং আপনার AndroidManLive.xML ফাইলে নিম্নলিখিত কোড যুক্ত করুন

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

আমি আশা করি এটা তোমাকে সাহায্য করবে।


3

এই কোডটি আমার পক্ষে কাজ

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

1

আপনার প্রশ্নের মধ্যে প্রদর্শিত বিকল্পগুলি ছাড়াও, মেনু থেকে সরাসরি আপনার এক্সএমএল ফাইলটিতে ক্রিয়াটি প্রয়োগের সম্ভাবনা রয়েছে, উদাহরণস্বরূপ:

<item
   android:id="@+id/OK_MENU_ITEM"
   android:onClick="iraActivitySobre" />

এবং আপনার জাভা (ক্রিয়াকলাপ) ফাইলের জন্য, আপনাকে মেনুআইটেম টাইপের একক প্যারামিটার সহ একটি সর্বজনীন পদ্ধতি প্রয়োগ করতে হবে, উদাহরণস্বরূপ:

 private void showMsgDirectMenuXml(MenuItem item) {
    Toast toast = Toast.makeText(this, "OK", Toast.LENGTH_LONG);
    toast.show();
  }

দ্রষ্টব্য: এই পদ্ধতিতে অপশন আইটেমসিলেক্টের (মেনু আইটেম আইটেম) অনুরূপ আচরণ থাকবে


0

আপনার প্রতিস্থাপন করুন onOptionsItemSelected:

  @Override
          public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
              case OK_MENU_ITEM:
                 startActivity(new Intent(DashboardActivity.this, SettingActivity.class));
                 break;

            // You can handle other cases Here.
              default: 
                 super.onOptionsItemSelected(item);
            }
          }

এখানে, আমি থেকে নেভিগেট করতে চান DashboardActivity করতে SettingActivity

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.