我已经创建了这段代码来列出 sd 卡上特定文件夹(称为“pass”)下的 pdf 文件,而我正在努力从上下文菜单中显示删除功能。我一直点击任何文件,但它不显示任何菜单
The list code and the context menu
public class PDFListActivity extends ListActivity {
ArrayAdapter<String> adapter;
int clickCounter=0;
ArrayList<String> listItems=new ArrayList<String>();
private File[] imagelist;
String[] pdflist;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ListView lv=getListView();
registerForContextMenu(lv);
setContentView(R.layout.mainlistpdf);
File images=new File(Environment.getExternalStorageDirectory(), "pass");
imagelist = images.listFiles(new FilenameFilter(){
public boolean accept(File dir, String name)
{
return ((name.endsWith(".pdf")));
}
});
pdflist = new String[imagelist.length];
for(int i = 0;i<imagelist.length;i++)
{
pdflist[i] = imagelist[i].getName();
}
this.setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, pdflist));
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
ListView list=getListView();
registerForContextMenu(list);
menu.setHeaderTitle("Context Menu");
menu.add(0, v.getId(), 0, "delete");
menu.add(0, v.getId(), 0, "wtever");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
if(item.getTitle()=="delete"){function1(item.getItemId());}
else if(item.getTitle()=="wtever"){function2(item.getItemId());}
else {return false;}
return true;
}
public void function1(int id){
Toast.makeText(this, "function 1 called", Toast.LENGTH_SHORT).show();
File folder = Environment.getExternalStorageDirectory();
String fileName = folder.getPath() + "/pass/hello.pdf";
File myFile = new File(fileName);
if(myFile.exists())
myFile.delete();
}
public void function2(int id){
Toast.makeText(this, "function 2 called", Toast.LENGTH_SHORT).show();
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
PackageManager packageManager = getPackageManager();
Intent testIntent = new Intent(Intent.ACTION_VIEW);
testIntent.setType("application/pdf");
List list = packageManager.queryIntentActivities(testIntent, PackageManager.MATCH_DEFAULT_ONLY);
if (list.size() > 0 && imagelist[(int) id].isFile()) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
Uri uri = Uri.fromFile(imagelist[(int) id].getAbsoluteFile());
intent.setDataAndType(uri, "application/pdf");
startActivity(intent);
}
}
}
My xml file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView
android:id="@+android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:drawSelectorOnTop="false" />
</LinearLayout>