簡體   English   中英

如何在活動中訪問片段的按鈕

[英]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.

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