2017-01-04 57 views
0

我到處搜索,我也試過每一個代碼,我看着,但不幸的是他們都沒有工作。 :(我已經添加了registerForContextMenu()方法,但它仍然不會彈出菜單,當我點擊我的列表中的一個項目時,請幫助我已經瘋了。(這是我到目前爲止...在片段裏面的ListView的上下文菜單

public class BorrowersFragment extends Fragment { 
// TODO: Rename parameter arguments, choose names that match 
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER 
Button btnSearch,btnGetAll; 

private static final String ARG_PARAM1 = "param1"; 
private static final String ARG_PARAM2 = "param2"; 

// TODO: Rename and change types of parameters 
private String mParam1; 
private String mParam2; 

private OnFragmentInteractionListener mListener; 

public BorrowersFragment() { 
    // Required empty public constructor 
} 

/** 
* Use this factory method to create a new instance of 
* this fragment using the provided parameters. 
* 
* @param param1 Parameter 1. 
* @param param2 Parameter 2. 
* @return A new instance of fragment BorrowersFragment. 
*/ 
// TODO: Rename and change types and number of parameters 
public static BorrowersFragment newInstance(String param1, String param2) { 
    BorrowersFragment fragment = new BorrowersFragment(); 
    Bundle args = new Bundle(); 
    args.putString(ARG_PARAM1, param1); 
    args.putString(ARG_PARAM2, param2); 
    fragment.setArguments(args); 
    return fragment; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (getArguments() != null) { 
     mParam1 = getArguments().getString(ARG_PARAM1); 
     mParam2 = getArguments().getString(ARG_PARAM2); 
    } 

} 

/*@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    return inflater.inflate(R.layout.fragment_borrowers, container, false); 
}*/ 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    //super.onCreate(savedInstanceState); 
    //setContentView(R.layout.activity_main); 
    View borrowerView = inflater.inflate(R.layout.fragment_borrowers, container, false); 
    btnSearch = (Button) borrowerView.findViewById(R.id.btnSearch); 
    //btnSearch.setOnClickListener(this); 

    btnGetAll = (Button) borrowerView.findViewById(R.id.btnGetAll); 
    //btnGetAll.setOnClickListener(this); 

    BorrowerDBHelper repo = new BorrowerDBHelper(this.getContext()); 
    UserDBHelper repoUser = new UserDBHelper(this.getContext()); 
    User user = repoUser.getUserInfo(); 
    ArrayList<HashMap<String, String>> borrowerList = repo.getBorrowerList(user.getId()); 
    if(borrowerList.size()!=0) { 
     ListView lv = (ListView) borrowerView.findViewById(R.id.borrowerListView); 
     ListAdapter adapter = new SimpleAdapter(BorrowersFragment.this.getContext(),borrowerList, R.layout.view_borrower, new String[] { "id","full_name"}, new int[] {R.id.borrower_Id, R.id.borrower_name}); 
     lv.setAdapter(adapter); 
     registerForContextMenu(lv); 
    }else{ 
     Toast.makeText(this.getContext(),"No student!",Toast.LENGTH_SHORT).show(); 
    } 
    return borrowerView; 
} 

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 
    menu.add(Menu.NONE, R.id.view_profile_item, Menu.NONE, "View Profile"); 
    menu.add(Menu.NONE, R.id.view_payments_item, Menu.NONE, "View Payment History"); 
    menu.add(Menu.NONE, R.id.add_payment_item, Menu.NONE, "Add Payment"); 
} 

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.view_profile_item: 
      Log.i("ContextMenu", "Item 1a was chosen"); 
      return true; 
     case R.id.view_payments_item: 
      Log.i("ContextMenu", "Item 1b was chosen"); 
      return true; 
     case R.id.add_payment_item: 
      Log.i("ContextMenu", "Item 1b was chosen"); 
      return true; 
    } 
    return super.onContextItemSelected(item); 
} 

// TODO: Rename method, update argument and hook method into UI event 
public void onButtonPressed(Uri uri) { 
    if (mListener != null) { 
     mListener.onFragmentInteraction(uri); 
    } 
} 

/*@Override 
public void onAttach(Context context) { 
    super.onAttach(context); 
    if (context instanceof OnFragmentInteractionListener) { 
     mListener = (OnFragmentInteractionListener) context; 
    } else { 
     throw new RuntimeException(context.toString() 
       + " must implement OnFragmentInteractionListener"); 
    } 
}*/ 

@Override 
public void onDetach() { 
    super.onDetach(); 
    mListener = null; 
} 

/** 
* This interface must be implemented by activities that contain this 
* fragment to allow an interaction in this fragment to be communicated 
* to the activity and potentially other fragments contained in that 
* activity. 
* <p> 
* See the Android Training lesson <a href= 
* "http://developer.android.com/training/basics/fragments/communicating.html" 
* >Communicating with Other Fragments</a> for more information. 
*/ 
public interface OnFragmentInteractionListener { 
    // TODO: Update argument type and name 
    void onFragmentInteraction(Uri uri); 
} 
} 

請注意,這片段是/所示,當我從抽屜式導航這是一個MainActivity。 希望你能幫助我。謝謝!

回答

0

你想打開一個菜單中選擇它當用戶點擊ListView項目?

因此,您可以簡單地設置OnLongClickListener(或簡單的OnClickListener取決於你正在上的項目試圖做的),打開一個:

android.support.v7.widget.PopupMenu:

@Override 
public boolean onLongClick(View v) { 
    PopupMenu menu = new PopupMenu(YourActivity.this, listItem); 
    menu.getMenuInflater().inflate(R.menu.your_menu_file, menu.getMenu()); 
    menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { 
     @Override 
     public boolean onMenuItemClick(MenuItem item) { 
     switch (item.getItemId()) { 
      case R.id.your_first_menu_item: 
      // do something 
      break; 
     } 
     return false; 
     } 
    }); 
    menu.show(); 
    return false; 
} 
0

原諒我的清白......這是如此尷尬。其實際工作。我只需要長時間點擊它。

XD我很抱歉浪費時間。歡呼每個人。

相關問題