如何在 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()
}
}
}
我希望它能帮助那里的人=)
我正在创建两个 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()
}
}
}
我希望它能帮助那里的人=)