簡體   English   中英

如何從Fragment訪問Activity里面的Button

[英]How to access Button inside Activity from Fragment

如何從Fragment訪問Activity里面的Button。 實際上我設置myButton是禁用但當我點擊我的一些radioButton時我想設置myButton?

你可以嘗試一些事情。 第一個是使用getActivity().findViewByIt(id)來獲取Button ,我認為它應該可以工作但是它不是工程方面的好解決方案,因為你的Fragment會對托管它的Activity布局做出假設。 第二種是提供這里描述的回調接口。 每次復選框更改狀態時,只需調用回調方法。 這種方法更好,因為任何實現回調接口的活動都可以自由地重用Fragment 最后但並非最不重要的是,如果可能的話,你應該嘗試將Button放在片段中。

這是一個例子:

在MyFragment.java中

public MyFragment extends Fragment {
    public interface Callback {
        public void onRadioButtonClicked(View radioButton);
    }

    private Callback callback;

    @Override
    public void onAttach(Activity ac) {
        super.onAttached(ac);
        callback = (Callback)ac;
    }

    @Override
    public void onDetach() {
        callback = null;
        super.onDetach();
    }

    ....
    ....
       radioButton.setOnClickListener(new OnClickListener() {
           public void onClick(View view) {
               if (callback != null) {
                   callback.onRadioButtonClicked(view);
               }
           }
       });
}

在承載/包含MyFragment的MyActivity.java中:

public MyActivity extends Activity implements MyFragment.Callback {

    ...
    @Override
    public void onRadioButtonClicked(View radioButton) {
        // The radiobutton in MyFragment has been clicked
        myButton.setEnabled(true); // or something like this.
    }

}

此設計使用MyFragment.Callback接口將托管活動的詳細信息遠離Fragment,只要Activity實現MyFragment.Callback ,就允許任何Activity托管Fragment。

暫無
暫無

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

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