Popup-Menü im custom ListView
Was ich erreichen will:
Habe ich eine custom ListView-adapter. Für jedes Listitem-ich möchte hinzufügen ein popup-Menü, ziemlich ähnlich wie die ListView in der aktuellen Google-Play-Anwendung.
Dies ist, was ich versucht habe:
Die meisten von meinem code kommt diese Android Beispiel - samples\android-19\ui\ActionBarCompat-ListPopupMenu
CustomFragmentPageAdapter.java:
//create new fragment
mCustomFragment = CustomFragment.newInstance(position);
CustomFragment.java
public class CustomFragment extends ListFragment implements View.OnClickListener{
...
@Override
public void onClick(final View v) {
v.post(new Runnable() {
@Override
public void run() {
showPopupMenu(v);
}
});
}
private void showPopupMenu(View view) {
PopupMenu popup = new PopupMenu(getActivity(), view);
popup.getMenuInflater().inflate(R.menu.popup_menu, popup.getMenu());
popup.show();
}
CustomArrayAdapter:
public class CustomAdapter extends ArrayAdapter<WatchListPlayerItem> {
...
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final int pos = position;
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View rowView = inflater.inflate(R.layout.watch_list_row, parent, false);
View popupButton = rowView.findViewById(R.id.imgPopUp);
popupButton.setTag(getItem(position));
popupButton.setOnClickListener(mFragment);
return rowView;
}
}
popup_menu.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/install"
android:title="Install" />
<item
android:id="@+id/addtowishlist"
android:title="Add to wishlist" />
</menu>
Logcat Ausgabe:
java.lang.RuntimeException: Failed to resolve attribute at index 6
at android.content.res.TypedArray.getLayoutDimension(TypedArray.java:603)
at android.view.ViewGroup$LayoutParams.setBaseAttributes(ViewGroup.java:6423)
at android.view.ViewGroup$MarginLayoutParams.<init>(ViewGroup.java:6591)
at android.widget.FrameLayout$LayoutParams.<init>(FrameLayout.java:735)
...
Wird der Fehler geworfen popup.show() in meinem CustomFragment.
Dieser Fehler ist eindeutig das fahren mich verrückt, und JEDE Hilfe, um dieses Problem zu lösen wird sehr geschätzt!
InformationsquelleAutor Al0x | 2015-01-05
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich endlich die Lösung für mein problem, auch wenn ich keine Erklärung, warum diese Lösung funktioniert.
Mit der folgenden import-hatte ich immer die Fehler:
Es funktioniert gut mit den folgenden import:
Getestet habe ich den code von Ric (vielen Dank für die tolle Hilfe!!!) und meine eigene. Beide arbeiten jetzt. Hat vielleicht jemand eine Erklärung, warum der import von Fragen in diesem Fall.
Erstellen Sie zuerst eine
button
in Ihrem custom-item-listview.xml und fügen Sie den folgenden code:Button
:Klasse:
EDIT:
Dies funktioniert gut für mich:
TAB1
CustomList
:verwenden diese als(Aktivitäten-Kontext)nicht Anwendungs-Kontext oder den Kontext
Beachten:
Nicht vergessen Sie zu importieren....
Rick ' s code-Zeilen funktioniert perfekt, solange Sie importieren die folgenden:
Nicht ein:
Ich habe gerade das gleiche Problem, wenn ich Sie modifiziert habe das Thema Eltern-Stil:
von
zu
Vielleicht Ihrer app verwendet das Thema.Basis-Stil, die nicht 6. definieren Sie die erforderlichen parameter von PopupMenu. Von DAHER Frage Wie zu verwenden ActionBarActivity mit dem Thema.Material, Thema.AppCompat erstreckt sich Thema.Base.AppCompat
Habe ich Fix eine ähnliche Fehlermeldung nur durch die übergabe als parameter eine statische Aktivität. Zum Beispiel:
Auch, Ihr problem könnte diese sein: Problem 152141
Hoffentlich wird es Ihnen helfen, unter Beachtung der
android.support.v7.widget.PopupMenu
importieren.Grüße.