[英]How to access the fragment's button in an activity
我正在創建兩個 java 文件第一個主要的activity.java文件第二個fragment.java文件在fragment.java上創建按鈕如何點擊activity.java上寫的監聽器幫助我
片段.java
public class fragment extends fragment{
Button btn;
// some code
btn = (Button)layout.findviewbyid(R.id.btn1);
}
}
活動.java
public class activity extends Activity
{
// how to access the click action btn here
btn.setOnclicklistner(new View.OnClickLisitner(){
public OnClick(){
}
您可以定義自定義clickListener
類並在fragment
創建它的instance
在那里設置偵聽器實例。 現在您可以在該類中編寫代碼。 希望它會對你有所幫助。
public class MyCustomListener implements OnClickListener{
@override
public void onClick(View v){
// you stuff
}
}
然后在你的片段中調用它
MyCustomListener listener=new MyCustomListener();
btn.setOnClickListener(listener);
如果我正確理解您的問題,您希望將片段內的按鈕單擊委托給其父活動。
保留對片段內的父活動的引用。 然后將偵聽器設置為片段中的按鈕,如下所示:
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
parentActivity.doStuff();
}
};
在您的父Activity中,定義方法doStuff()
:
public void doStuff() {
// handle button click event here
}
要在片段中使用活動按鈕,您必須使用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是活動中的按鈕
Fragment中的getActivity()返回Fragment當前與之關聯的Activity。 (請參閱http://developer.android.com/reference/android/app/Fragment.html#getActivity() )。
這是我在 Java 和 Kotlin 中對這個問題的看法。
爪哇:
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()
}
}
}
我希望它可以幫助那里的人 =)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.