简体   繁体   English

如何在片段上监听来自Activity的按钮的单击动作?

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

i have an activity that has a Fragment.I want to listen my button which in my activity from my fragment. 我有一个带有Fragment.I的活动,我想听我在我的活动中来自我的片段的按钮。 Sample Code is here; 示例代码在这里;

MainActivity 主要活动

  OnSearchClickListener searchListener;


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


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

myFragment myFragment

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

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

Listener 听众

public interface OnSearchClickListener {
public void OnSearchClick();

} }

i used this structure. 我用这种结构。 but it gave me nullpointerexception. 但是它给了我nullpointerexception。 Do you tell me how can i listen a button which in an Activity from a fragment ? 你告诉我如何听片段中一个活动中的按钮吗?

Do you tell me how can i listen a button which in an Activity from a fragment ? 你告诉我如何听片段中一个活动中的按钮吗?

Doing in right way but forget to initialize searchListener object using Fragment object which currently adding in FragmentManager. 这样做是正确的,但是忘记使用当前添加在FragmentManager中的Fragment对象初始化searchListener对象。 do it as: 这样做:

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

Now use searchListener object for calling OnSearchClick from Activity on Button click. 现在,使用searchListener对象从“单击按钮的活动”中调用OnSearchClick

You just have to initialize OnSearchClickListener searchListener; 您只需要初始化OnSearchClickListener searchListener; inside your onCreate method from the MainActivity. 在MainActivity的onCreate方法中。

You should have something like this in you onCreate: 您应该在onCreate中包含以下内容:

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

before beginning the transaction, you do this: 在开始交易之前,请执行以下操作:

searchListener = (OnSearchClickListener) frag;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在Android Studio中从活动到片段单击意图 - how to intent with on click button from activity to fragment in android studio 如何从包含在另一个布局中的按钮单击打开片段 - How to open a fragment from a button click which is included in another layout Android:如何从片段中以编程方式单击先前位于活动堆栈中活动中的按钮? - Android: How to programmatically click on a button previously located in an activity in the activity stack, from a fragment? 如何通过单击对话框[NOT DIALOG FRAGMENT](由fragment1调用)的按钮从fragment2替换fragment1 - how to replace the fragment1 from fragment2 from a button click of a dialog[NOT DIALOG FRAGMENT] (which is called by fragment1) 如何在已打开活动的操作栏中向片段添加后退按钮? - How to add a back button to the fragment in the action bar of an opened activity? 如何从Fragment访问Activity里面的Button - How to access Button inside Activity from Fragment 单击按钮时从 1 Activity 移动到特定片段。 - Move from 1 Activity to specific fragment on button click. Acivity1 Fragment2 -> Activity2(单击按钮后)-> Activity1 Fragment2 从活动导航到特定片段 - Acivity1 Fragment2 -> Activity2 (after button click) -> Activity1 Fragment2 navigate from activity to specific fragment 通过单击操作按钮来更改活动? - Change activity with action button click? 实现一个可从每个片段和活动访问的按钮 - Implement a button which is reachable from every fragment and activity
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM