2017-05-02 72 views
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(); 
} 

感謝您的幫助

回答

0

你不能得到getSupportFragmentManager()因爲你沒有Activity。您應該將在onClick()中發生的代碼委託給Activity,以便您可以獲得所需的內容。

回答其他人發帖。 OP不能得到FragmentManager像你這樣建議:​​

MainActivity.this.getSupportFragmentManager(); 

因爲ArticleViews不是一個活動。

+0

當我將代碼委託給片段(在while循環中)時,onClickListener不起作用 – aserrin55

+0

我在OP中做了一些更改。我理解你的答案,但在片段中代碼不起作用。例如,Log.i未被執行。 – aserrin55

+0

有什麼好嗎? – aserrin55

相關問題