lv1.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener(){
 @Override
 public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
if (id > 0) {
 popup = new PopupMenu(this, view);//这里用this会报错
 popup.getMenuInflater().inflate(R.menu.simple_menu1, popup.getMenu());
 popup.show(); 
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
 @Override 
public boolean onMenuItemClick(MenuItem item) { 
switch (item.getItemId()) {
 case R.id.menu1: ArrayAdapter temp_adp = (ArrayAdapter) lv1.getAdapter(); 
temp_adp.remove(temp_adp.getItem(selected_position)); 
return true; 
default: return false;
 }
 }
 });
 } 
return true;
 }
 });

解决方案 »

  1.   

    使用 XXXActivity.this 就行了。
    你的这个 this 是指向了 OnItemLongClickListener 的匿名内部类了,所以会报错
      

  2.   

    package com.example.administrator.listviewexp;import android.app.Activity;
    import android.support.v7.app.AlertDialog;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.widget.AdapterView;
    import android.view.View;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import android.widget.EditText;
    import android.widget.Button;
    import android.widget.PopupMenu;
    import android.view.MenuItem;
    import android.content.Context;
    import android.widget.SimpleAdapter;public class MainActivity extends AppCompatActivity {    public Button bt1;
        public ListView lv1;
        private int selected_position = -1;
        private PopupMenu popup;    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);        bt1.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View v)
                {
                    EditText et_c,et_a,et_n;
                    et_c=(EditText)findViewById(R.id.et_c);
                    et_a=(EditText)findViewById(R.id.et_a);
                    et_n=(EditText)findViewById(R.id.et_n);
                    ArrayAdapter temp_adp=(ArrayAdapter) lv1.getAdapter();
                    temp_adp.add(et_c.getText().toString()+"   "+et_a.getText().toString()+"     "+et_n.getText().toString());
                }
            });
            lv1.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener(){
                @Override
                public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                    if (id > 0)
                    {
                        popup = new PopupMenu(getActivity(), view);
                        popup.getMenuInflater().inflate(R.menu.simple_menu1, popup.getMenu());
                        popup.show();
                        popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                            @Override
                            public boolean onMenuItemClick(MenuItem item) {
                                switch (item.getItemId()) {
                                    case R.id.menu1:
                                    ArrayAdapter temp_adp = (ArrayAdapter) lv1.getAdapter();
                                        temp_adp.remove(temp_adp.getItem(selected_position));
                                        return true;
                                    default:
                                        return false;
                                }
                            }
                        });
                    }
            return true;
            }
            });
        }
    }代码全贴上了,我好像没有XXXActivity之类的
      

  3.   

    就是 MainActivity.this ,这样指向的就是当前的 Activity 对象了,之前贴的代码看不到类名,所以写的 XXXActivity 
      

  4.   

     popup = new PopupMenu(getActivity(), view); 改成 popup = new PopupMenu(MainActivity.this, view);