2016-08-11 76 views
0

我是Android開發中的新手。我想在我的片段中添加一個偵聽器,點擊按鈕後會發送一條消息。我需要在我的主要片段類中聽取這些信息,以便我的活動可以訪問此主片段並處理消息。我還需要刪除我的主要片段中的偵聽器。那麼我如何實現這個?Android中實現偵聽器的片段

編輯

MyFragment

sendMessage(message)MyFragment其中有一個按鈕點擊的方法。需要在這裏實現監聽器嗎?

MainFragment 如何處理在這裏這sendMessage事件,併發送至MAinActivity

流動就像MyFragment(childfragment) -> MAinFragment -> MainActivity

+0

歡迎的計算器。你在嘗試什麼呢? – pRaNaY

回答

1

對於你的活動和片段可以接口之間的通信。這個想法基本上是在給定片段內定義一個接口,並讓活動實現該接口。

一旦它實現了這個接口,你就可以在它覆蓋的方法中做任何你想做的事情。

爲了幫助你一些代碼級別的細節,你可以參考http://simpledeveloper.com/how-to-communicate-between-fragments-and-activities/

希望這將幫助!

+0

請參閱我編輯的代碼 – Mariana

1

在你的片段類,說MyFragment.java創建一個接口

public interface MyFragmentInterfacer{ 
    void onButtonClick(String msg); 
} 
MyFragmentInterfacer fragmentInterfacer; 

//Override this function as below to set fragmentInterfacer 
@Override 
public void onAttach(Context context){ 
    fragmentInterfacer = (MyFragmentInterfacer)context; 
} 

,並在那裏你想去的地方,你想要得到這個消息您的主要活動來調用這個函數

myButton.setOnClickListener(new View.OnClickListener(){ 
    @Override 
    public void onClick(View v){ 
     if(fragmentInterfacer != null){ 
      fragmentInterfacer.onButtonClick("This is my Message"); 
     } 
    } 
}); 

然後,實現此接口

public class MainActivity implements MyFragment.MyFragmentInterfacer{ 
. 
. 
} 

然後在MainA中實現接口函數ctivity

@Override 
public void onButtonClick(String msg){ 
    //Do something with this message 
} 

要刪除此監聽器,在你的片段類使用

fragmentInterfacer = null; 

當你想關閉這個監聽器。

或者你也可以從按鍵

myButton.setOnClickListener(null); 

或禁用點擊按鈕刪除onClickListener

myButton.setClickable(false); 
+0

請參閱我的編輯代碼 – Mariana