我有一个这样的方法,在一个公共类中,以便在任何我想要的地方创建视图。
视图正在正确创建,但我还需要在单击该布局时添加一个侦听器。
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();
}
});
但是获得 getSupportFragmentManager(); 是不可能的,因为这个类不是Activity或片段(并且它不必是一个)
所以,我的问题是,我该怎么做?
我还在我调用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();
}
感谢您的帮助
答案 0 :(得分:0)
由于您没有getSupportFragmentManager()
,因此无法获得Activity
。您应该将onClick()
中发生的代码委托给Activity
,以便获得所需内容。
回答其他人发帖。 OP无法像您建议的那样获得FragmentManager
:
MainActivity.this.getSupportFragmentManager();
因为ArticleViews
不是活动。