0
我有一個像這樣的方法,在一個普通的類中,以創建任何我想要的視圖。如何設置視圖中的OnClickListener
視圖正在正確創建,但我還需要添加一個偵聽器,當該佈局被點擊。
public class ArticleViews {
public LinearLayout getTinyView(final Context cont){
//Main layout
LinearLayout x = new LinearLayout(cont);
....
我嘗試:
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();
}
});
但它是IMPOSIBLE得到getSupportFragmentManager();,因爲這個類不是活動或片段(並且它不一定是一個)
所以,我的問題是,我該怎麼做?
我還寫了代碼中的其中一部分代碼,我稱之爲ArticleView類......這是一個片段,所以在我看來這裏的代碼應該工作。
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);
}
而且文章是..
final ArrayList<ArticleViews> articles = new ArrayList<>();
但應用程序並不在代碼中輸入
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();
}
感謝您的幫助
當我將代碼委託給片段(在while循環中)時,onClickListener不起作用 – aserrin55
我在OP中做了一些更改。我理解你的答案,但在片段中代碼不起作用。例如,Log.i未被執行。 – aserrin55
有什麼好嗎? – aserrin55