W porządku, więc mam listę (która jest również oknem dialogowym fragmentu), która wyświetla znajomych użytkowników, a każdy element na tej liście ma przycisk (oznaczony etykietą znajomych na zdjęciu) i gdy użytkownik kliknie ten przycisk, chce wyświetlić okno dialogowe innego fragmentu, które wyświetla wszystkie opcje interakcji z tym użytkownikiem (żądanie znajomego, blok, wysłanie wiadomości prywatnej itd.) problem polega na tym, że ten przycisk i jego detektor onClick jest obecnie implementowany poprzez nadpisanie mojej metody viewview adapterów getView i utworzenie fragmentDialog wymaga dostępu do menedżera fragmentów. czy istnieje sposób, aby to zadziałało?Uruchamiaj fragment okna po kliknięciu przycisku z niestandardowego adaptera podstawowego> getView [IMG INCLUDED]
EDYCJA: Nie mogę zaksięgować rzeczywistego kodu z projektu, ale dołączam uproszczony podstawowy adapter w. onClickListener, które powinno wyjaśnić, co próbuję zrobić. Nie można uzyskać dostępu do fragmentManager z klasy adaptera podstawa, aby fragment dialogowego możliwy
LazyAdapter.java
package com.example.androidhive;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class LazyAdapter extends BaseAdapter {
private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;
public ImageLoader imageLoader;
public LazyAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
activity = a;
data=d;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader=new ImageLoader(activity.getApplicationContext());
}
public int getCount() {
return data.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.list_row, null);
Button requestBtn = (Button)vi.findViewById(R.id.title); // title
HashMap<String, String> song = new HashMap<String, String>();
song = data.get(position);
// Setting all values in listview
title.setText(song.get(CustomizedListView.KEY_TITLE));
artist.setText(song.get(CustomizedListView.KEY_ARTIST));
duration.setText(song.get(CustomizedListView.KEY_DURATION));
imageLoader.DisplayImage(song.get(CustomizedListView.KEY_THUMB_URL), thumb_image);
requestBtn.setOnClickListener(new myOnClickListener(position));
return vi;
}
public class myOnClickListener implements OnClickListener{
private int position;
private String clicked_uid;
public myOnClickListener(int position){
this.position=position;
}
@Override
public void onClick(View v) {
//THIS IS WHERE IM TRYING TO PUT THE FRAGMENT DIALOG
FragmentManager fm = TabHostFragmentActivity.this.getSupportFragmentManager();
FriendsFamiliarsDialog friendsDialog = new FriendsFamiliarsDialog().newInstance(TabHostFragmentActivity.profile_uid,"friends");
friendsDialog.show(fm, "friendsdialog");
}
}
}
Czy możesz opublikować odpowiedni kod – TronicZomB
Po przesłaniu kodu klasy adaptera. – GrIsHu
Uruchamianie 'DialogFragment' w' DialogFragment' brzmi nieporządnie. Zamiast używać 'DialogFragment's użyj dialogowych tematów' Activity's. –