如何在 activity 中访问片段的按钮

How to access the fragment's button in an activity

我正在创建两个 java 文件第一个主要 activity.java 文件第二个 fragment.java 文件在 fragment.java 上创建按钮 如何单击写在 activity.java 帮助上的侦听器我

fragment.java

public class fragment extends fragment{
Button btn;
// some code
btn = (Button)layout.findviewbyid(R.id.btn1);

}

}

activity.java

public class activity extends Activity
{


 // how to access the click action btn here
 btn.setOnclicklistner(new View.OnClickLisitner(){
 public OnClick(){


 }

您可以定义自定义 clickListener class 并在 fragment 中创建它的 instance 并在那里设置侦听器实例。现在您可以在 class 中编写代码了。希望对你有帮助。

public class MyCustomListener implements OnClickListener{

     @override
     public void onClick(View v){

     // you stuff
     }  
}

然后在你的片段中调用这个

MyCustomListener listener=new MyCustomListener();
btn.setOnClickListener(listener);

如果我对你的问题的理解正确,你想将片段内的按钮点击委托回其父级 activity。

在片段中保留对父 activity 的引用。然后将侦听器设置为片段中的按钮,如下所示:

btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        parentActivity.doStuff();
    }
};

在您的父级 Activity 中,定义方法 doStuff():

public void doStuff() {
    // handle button click event here
}

要使用片段中 activity 中的按钮,您必须使用 getActivity()

在你的片段中,

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_item_select, container, false);

        btn = (Button) getActivity().findViewById(R.id.btn);
}

btn 是 activity

中的按钮

getActivity() 在 Fragment returns 中 Activity Fragment 当前关联。 (参见 http://developer.android.com/reference/android/app/Fragment.html#getActivity())。

这是我在 Java 和 Kotlin 中对这个问题的看法。

Java:

public final class YourActivity extends AppCompatActivity {

   /***/

   public final void yourMethod() {
      printIn("Printing from yourMethod!")
   }
}

public final class YourFragment extends Fragment {

   /***/
    
    @Override
    public void onViewCreated(View v, Bundle savedInstanceState) {
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                YourActivity yourActivity = (YourActivity) getActivity();
                yourActivity.yourMethod();
            }
        }));
    }
}

科特林:

class YourActivity : AppCompatActivity() {

    /***/

    fun yourMethod() {
        print("Printing from yourMethod!")
    }
}

class YourFragment: Fragment() {

    /***/

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        button.setOnClickListener {
            val yourActivity = activity as YourActivity
            yourActivity.yourMethod()
        }
    }
}

我希望它能帮助那里的人=)