Ich habe eine Methode wie diese in einer gemeinsamen Klasse, um Ansichten zu erstellen, wo immer ich will.So legen Sie OnClickListener in einer Ansicht fest
Die Ansichten werden korrekt erstellt, aber ich muss auch einen Listener hinzufügen, wenn auf dieses Layout geklickt wird.
public class ArticleViews {
public LinearLayout getTinyView(final Context cont){
//Main layout
LinearLayout x = new LinearLayout(cont);
....
Mein Versuch:
x.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ArticleTools.selectedArticle = art;
Fragment art = new ArticleDetailsFragment();
FragmentManager fragmentManager = ¿?¿?¿?getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.include_main, art);
fragmentTransaction.commit();
}
});
Aber es ist imposible getSupportFragmentManager zu bekommen(); weil diese Klasse keine Aktivität oder ein Fragment ist (und es muss auch keines sein)
Also, meine Frage ist, wie kann ich das tun?
Ich habe auch den Code in einem der Teile des Codes geschrieben, in dem ich die ArticleView-Klasse ... Dies ist ein Fragment, so dass meiner Meinung nach hier der Code funktionieren sollte.
while(it2.hasNext()){
DataSnapshot ds = it2.next();
Articulo a = ds.getValue(Articulo.class);
a.setUserId(usuerId);
ArticleViews av = new ArticleViews(a);
av.getTinyView(getContext()).
setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setClickListenerToView();
}
});
articles.add(av);
}
Und Artikel ist ..
final ArrayList<ArticleViews> articles = new ArrayList<>();
Aber die App eingeben nicht im Code
public void setClickListenerToView(){
Log.i("OnClick", "enter");
Fragment art = new ArticleDetailsFragment();
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.include_main, art);
fragmentTransaction.commit();
}
Danke für die Hilfe
Wenn ich den Code im Fragment delegiere (in der while-Schleife), funktioniert der onClickListener nicht – aserrin55
Ich habe einige Änderungen am OP vorgenommen. Ich verstehe deine Antwort, aber in dem Fragment funktioniert der Code nicht. Das Log.i wird beispielsweise nicht ausgeführt. – aserrin55
Etwas bitte? – aserrin55