Reputation: 535
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
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
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
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