Avinash Kumar Yadav
Avinash Kumar Yadav

Reputation: 535

Context menu with list view

My code is not showing any Toast.When i long push it shows three menu but when i select any menu like "delete" it does not show Toast, What can I do so that it work. I have tried with answer on this site but not get success. Here is my code.

 package com.example.avinashkumaryadav.menutwo;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Adapter;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
ListView lview;
String[] contact={"Avinash","Golu","Sam","Tom","Ram","Yam"};


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    lview=(ListView)findViewById(R.id.linearId) ;
    ArrayAdapter Array=new ArrayAdapter<String>(this,R.layout.linear_view,R.id.linearView,contact);
    lview.setAdapter(Array);
    registerForContextMenu(lview);
}

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);

    menu.setHeaderTitle("Select Action");
    menu.add(0,v.getId(),0,"Love");
    menu.add(0,v.getId(),0,"Edit");
    menu.add(0,v.getId(),0,"delete");
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if(item.getTitle()=="Love") {
        Toast.makeText(MainActivity.this, "Love u too dear", Toast.LENGTH_LONG).show();
    }
    else if(item.getTitle()=="Edit")
    {
        Toast.makeText(getApplicationContext(),"Editable",Toast.LENGTH_SHORT).show();
    }
    else if(item.getTitle()=="delete")
    {
        Toast.makeText(getApplicationContext(),"Can be Deleted",Toast.LENGTH_SHORT).show();
    }
  else
       {
          Toast.makeText(this,"Not clicked right",Toast.LENGTH_SHORT);
       }
       return true;

   }
 }

Cany anyone help me please?

Upvotes: 0

Views: 1739

Answers (3)

petey
petey

Reputation: 17140

String compares use the equals method and you can also simplify your code to one toast statement:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    String message = "Not clicked right";
    int length = Toast.LENGTH_SHORT;
    String title = item.getTitle().toString();
    if ("Love".equals(title)) {
        message = "Love u too dear";
        length = Toast.LENGTH_LONG;
    } else if ("Edit".equals(title)) {
        message = "Editable";
    } else if ("delete".equals(title)) {
        message = "Can be Deleted";
    }
    Toast.makeText(this, message, length).show();
    return true;
}

Upvotes: 0

Zach Sogolow
Zach Sogolow

Reputation: 149

In Java you must compare strings with .equals() and not ==.

Also, it looks like you are inflating a ContextMenu. You need to implement onContextItemSelected(MenuItem item) and not onOptionsItemSelected(MenuItem).

Take a look here: https://developer.android.com/guide/topics/ui/menus.html and scroll down to create a floating context menu.

Upvotes: 2

Karim
Karim

Reputation: 322

Try this :

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if(item.getTitle().equals("Love")) {
        Toast.makeText(this, "Love u too dear", Toast.LENGTH_LONG).show();
    }
    else if(item.getTitle().equals("Edit"))
    {
        Toast.makeText(ghis,"Editable",Toast.LENGTH_SHORT).show();
    }
    else if(item.getTitle().equals("delete"))
    {
        Toast.makeText(this,"Can be Deleted",Toast.LENGTH_SHORT).show();
    }
  else
       {
          Toast.makeText(this,"Not clicked right",Toast.LENGTH_SHORT);
       }
       return super.onOptionsItemSelected(item);

   }

Upvotes: 0

Related Questions