簡體   English   中英

如何在片段上監聽來自Activity的按鈕的單擊動作?

[英]How to listen click action of the button which is from Activity on fragment?

我有一個帶有Fragment.I的活動,我想聽我在我的活動中來自我的片段的按鈕。 示例代碼在這里;

主要活動

  OnSearchClickListener searchListener;


@Override
protected void onCreate(Bundle savedInstanceState){
......
}


myButton.setOnclickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            searchListener.OnSearchClick();
        }
    });

myFragment

public class MyFragment extends Fragment implements OnSearchClickListener{
........
 @Override
public void OnSearchClick() {

   Toast.makeText(context,"This message from fragment",......
}

聽眾

public interface OnSearchClickListener {
public void OnSearchClick();

}

我用這種結構。 但是它給了我nullpointerexception。 你告訴我如何聽片段中一個活動中的按鈕嗎?

你告訴我如何聽片段中一個活動中的按鈕嗎?

這樣做是正確的,但是忘記使用當前添加在FragmentManager中的Fragment對象初始化searchListener對象。 這樣做:

MyFragment  mFragment = new MyFragment();
...
ft.add(R.id.content, mFragment).commit();
searchListener=(OnSearchClickListener)mFragment;

現在,使用searchListener對象從“單擊按鈕的活動”中調用OnSearchClick

您只需要初始化OnSearchClickListener searchListener; 在MainActivity的onCreate方法中。

您應該在onCreate中包含以下內容:

MyFragment frag = new MyFragment();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
            ft.replace(R.id.main_activity_container, frag);
            ft.commit();

在開始交易之前,請執行以下操作:

searchListener = (OnSearchClickListener) frag;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM