2016-04-12 11 views
1

Ich bin ein Neuling in Android. Ich habe eine Hauptklasse wie dieseKontextmenü ohne Adapter

public class SearchDay extends AppCompatActivity implements View.OnClickListener { 
    private ImageButton insertDate; 
    private Calendar cal; 
    private int day; 
    private int month; 
    private int year; 
    DatabaseHelper db; 
    private Spinner SelectTypeNote; 
    private EditText et; 
    private Button btnSubmitSearchByDay, btnCancelSearchByDay; 
    SimpleCursorAdapter dataAdapter; 
    private static final int REQUEST_CODE = 10; 
    private ListView listViewManagePage; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_search_day); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setTitle("Tìm kiếm theo ngày"); 

     SelectTypeNote = (Spinner) findViewById(R.id.TypeNote_SearchByDay); 
     insertDate = (ImageButton) findViewById(R.id.dateInsertSearchByDay); 
     cal = Calendar.getInstance(); 
     et = (EditText) findViewById(R.id.dateInsertSearchByDay_editText); 
     btnSubmitSearchByDay = (Button) findViewById(R.id.searchByDay); 
     btnCancelSearchByDay = (Button) findViewById(R.id.cancelSearchByDay); 

     db = new DatabaseHelper(this); 

     cal = Calendar.getInstance(); 
     day = cal.get(Calendar.DAY_OF_MONTH); 
     month = cal.get(Calendar.MONTH); 
     year = cal.get(Calendar.YEAR); 
     insertDate.setOnClickListener(this); 

     Bundle extras = getIntent().getExtras(); 
     final String idUser = extras.getString("IdUser"); 
     setBtnSubmitNoteSearchByDay(); 
     setBtnCancelNoteSearchByDay(idUser); 
//  registerForContextMenu(listViewManagePage); 
     listViewManagePage = (ListView) findViewById(R.id.listView_SearchByDay); 
     listViewManagePage.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       Toast.makeText(SearchDay.this, "Thanh cong", Toast.LENGTH_SHORT).show(); 
       registerForContextMenu(listViewManagePage); 
      } 

     }); 
    } 
} 

Es ist erfolgreich, wenn ich auf Element in Listview klicke. Aber ich weiß nicht, wie man ein Kontextmenü aber ohne Adapter öffnet. Können Sie mir helfen, ein Kontextmenü ohne Adapter zu erstellen. Diese Zeile registerForContextMenu(listViewManagePage); nicht verlangen, überschreiben Sie jede Methode.

Antwort

1
  1. Sie müssen das Kontextmenü nur einmal in Ihrem Code registrieren. Registrieren Sie es außerhalb des OnItemClickListener-Ereignisses.
  2. Überschreibung onCreateContextMenu() Artikel zum Menü

    public void onCreateContextMenu (ContextMenu Menü Ansicht v, ContextMenuInfo MenuInfo)
    {
    super.onCreateContextMenu (Menü, v, MenuInfo) hinzuzufügen;
    menu.setHeaderTitle ("Wählen Sie die Aktion");
    menu.add (0, v.getId(), 0, "Aufruf"); // groupId, itemId, order, title
    menu.add (0, v.getId(), 0, "SMS") ;
    }

  3. Überschreibung onContextItemSelected() Menüpunkt des Klickereignis

    public boolean onContextItemSelected (MenuItem Artikel) {
    if (item.getTitle() == "Call") {
    Toast zu behandeln. makeText (getApplicationContext(), "aufrufender Code", Toast.LENGTH_LONG) .show();
    }
    else if (item.getTitle() == "SMS") {
    Toast.makeText (getApplicationContext(), "Senden von SMS-Code", Toast.LENGTH_LONG) .show();
    } sonst {
    Rückgabe false;
    }
    Rückkehr wahr;
    }

+0

Ich registrieren es außerhalb des OnItemClickListener Ereignis, aber nichts überschreiben –

+0

was Sie nichts überschreiben bedeuten? Sie müssen diese 2 Methoden überschreiben, um das Kontextmenü onCreateContextMenu() onContextItemSelected() zu verwenden. –