나는 다음과 같은 코드를 클릭 할 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);
}
}
성공적으로 컴파일 ...하지만 강제로 닫습니다. 나를 도와 주실 수있으세요? 고마워 친구!
에서 openContextMenu (보기)를 호출하지만 난 힘 가까이를 얻을? 어디에? –
죄송합니다, 잘못된 영어. 응용 프로그램이 실행되지 않습니다. 나는 힘을 가까이에서 얻는다. –