2012-10-01 21 views
0

我有這樣的代碼:實現OnClickListener使顯示上下文菜單短按一下不是長按

public class ListConActivity extends Activity { 

    private String[] Distro = { "Ubuntu", "Arch Linux", "Mandriva", 
      "Open Suse", "IGOS Nusantara", "Linux Mint", "Debian", "Fedora", 
      "CrunchBang", "Backtrack", "Puppy Linux", "OpenBSD", "Slackware", 
      "BlankOn", "CentOS" }; 
    private String[] pilihan_menu = { "Tambah Data", "Edit Data", "Hapus Data", 
      "Kirim Data" }; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Arrays.sort(Distro); 

     ListView list = (ListView) findViewById(R.id.list); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, Distro); 
     list.setAdapter(adapter); 
     registerForContextMenu(list); 
    } 

    public void onCreateContextMenu(ContextMenu menu, View tampil, 
      ContextMenuInfo menuInfo) { 
     if (tampil.getId() == R.id.list) { 
      AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo; 
      menu.setHeaderTitle(Distro[info.position]); 
      for (int i = 0; i < pilihan_menu.length; i++) { 
       menu.add(Menu.NONE, i, i, pilihan_menu[i]); 
      } 
     } 
    } 

    public boolean onContextItemSelected(MenuItem item) { 
     AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item 
       .getMenuInfo(); 
     String aksi = pilihan_menu[item.getItemId()]; 
     String nama_pilihan = Distro[info.position]; 
     String isi = String.format("Anda melakukan operasi %s pada pilihan %s", 
       aksi, nama_pilihan); 

     Toast.makeText(this, isi, Toast.LENGTH_LONG).show(); 
     return true; 
    } 
} 

其工作完全展示了長按文本菜單。我更改了代碼以實現onclick,只需點擊一下即可打開上下文菜單。

public class ListConActivity extends Activity implements OnClickListener { 

    private String[] Distro = { "Ubuntu", "Arch Linux", "Mandriva", 
      "Open Suse", "IGOS Nusantara", "Linux Mint", "Debian", "Fedora", 
      "CrunchBang", "Backtrack", "Puppy Linux", "OpenBSD", "Slackware", 
      "BlankOn", "CentOS" }; 
    private String[] pilihan_menu = { "Tambah Data", "Edit Data", "Hapus Data", 
      "Kirim Data" }; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Arrays.sort(Distro); 

     ListView list = (ListView) findViewById(R.id.list); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, Distro); 
     list.setAdapter(adapter); 
     registerForContextMenu(list); 
     list.setOnClickListener(this); 

    } 

    public void onCreateContextMenu(ContextMenu menu, View tampil, 
      ContextMenuInfo menuInfo) { 
     if (tampil.getId() == R.id.list) { 
      AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo; 
      menu.setHeaderTitle(Distro[info.position]); 
      for (int i = 0; i < pilihan_menu.length; i++) { 
       menu.add(Menu.NONE, i, i, pilihan_menu[i]); 
      } 
     } 
    } 

    public boolean onContextItemSelected(MenuItem item) { 
     AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item 
       .getMenuInfo(); 
     String aksi = pilihan_menu[item.getItemId()]; 
     String nama_pilihan = Distro[info.position]; 
     String isi = String.format("Anda melakukan operasi %s pada pilihan %s", 
       aksi, nama_pilihan); 

     Toast.makeText(this, isi, Toast.LENGTH_LONG).show(); 
     return true; 
    } 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     openContextMenu(v); 
    } 
} 

編譯成功..但我得到了力量關閉。你能幫我嗎?多謝,夥計!

+0

調用openContextMenu(視圖),但我得到強制關閉?哪裏? –

+0

對不起,英文不好..應用程序沒有運行。我接近力量。 –

回答

0

耶:對於在點擊方法的ListView &做setOnItemClickListener從Activity類

相關問題