2012-10-01 2 views
0

나는 다음과 같은 코드를 클릭 할 OnClickListener를 구현 : 완벽하게 긴 클릭당의 ContextMenu를 보여주는짧은 클릭으로 표시 상황에 맞는 메뉴가없는 긴

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

네 : 그 클릭 방식에서 목록보기 &에 대한 setOnItemClickListener을 활동 클래스