2017-07-06 6 views
0

私は長押しすると3つのメニューが表示されますが、「削除」のようなメニューを選択するとToastは表示されません。私はこのサイトで答えを試みたが、成功を収めていない。ここに私のコードです。リストビュー付きのコンテキストメニュー

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助けてください。

+0

それは「右クリックされていない」と言っていますか? – petey

+0

いいえそれは何も表示されません –

答えて

2

Javaでは、文字列を==ではなく.equals()と比較する必要があります。

また、ContextMenuを拡張しているようです。 onOptionsItemSelected(MenuItem)ではなく、onContextItemSelected(MenuItem項目)を実装する必要があります。

こちらをご覧ください:https://developer.android.com/guide/topics/ui/menus.htmlとスクロールして、フローティングコンテキストメニューを作成してください。

+0

しかし、私はまた、それを使用しているので、この "=="を使用してコンテキストメニューで人々が答えているstackoverflow見てきました –

+0

偉大な観測、ザック! –

+0

ありがとう! C#とJavaの間を行き来すると、これが私を殺しました。これで問題は解決しましたか?また、Toast.makeText()がelseブロックに表示されないようにする必要があります。 –

0

はこれを試してみてください:

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

    } 
+0

私は試しましたが、再びToastを取得しませんでした –

0

文字列は、equalsメソッドを使用し、また1冊のトースト書にあなたのコードを簡素化することができます比較:

@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; 
} 
+0

これは互換性のない型を示しています。Java.lang.Stringが見つかりました:Java.lang.charSequence –

+0

@AvinashKumarYadav。これは答えに固定されています – petey

関連する問題