在fragment里有一个button和TextView,我需要在Activity里使用它们
时间: 2024-02-25 10:54:52 浏览: 60
在activity中添加Fragment
要在Activity中使用Fragment里的Button和TextView,你需要在Fragment中定义接口,然后在Activity中实现该接口。具体步骤如下:
1. 在Fragment中定义一个接口,该接口包含一个方法,用于将Fragment中的Button和TextView传递给Activity:
```java
public interface OnFragmentButtonClickListener {
void onButtonClicked(Button button);
void onTextViewSet(TextView textView);
}
```
2. 在Fragment中创建一个OnFragmentButtonClickListener类型的成员变量,并在Fragment的onAttach()方法中初始化该成员变量:
```java
public class MyFragment extends Fragment {
private OnFragmentButtonClickListener mListener;
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
mListener = (OnFragmentButtonClickListener) context;
} catch (ClassCastException e) {
throw new ClassCastException(context.toString() + " must implement OnFragmentButtonClickListener");
}
}
}
```
3. 在Fragment中设置Button和TextView的点击事件,并在事件中调用接口的方法:
```java
public class MyFragment extends Fragment {
private Button mButton;
private TextView mTextView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_my, container, false);
mButton = view.findViewById(R.id.button);
mTextView = view.findViewById(R.id.text_view);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mListener.onButtonClicked(mButton);
}
});
mTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mListener.onTextViewSet(mTextView);
}
});
return view;
}
}
```
4. 在Activity中实现接口,并在接口的方法中获取Fragment中的Button和TextView:
```java
public class MyActivity extends AppCompatActivity implements OnFragmentButtonClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
MyFragment fragment = new MyFragment();
getSupportFragmentManager().beginTransaction()
.add(R.id.container, fragment)
.commit();
}
@Override
public void onButtonClicked(Button button) {
// 在这里获取Fragment中的Button并进行操作
}
@Override
public void onTextViewSet(TextView textView) {
// 在这里获取Fragment中的TextView并进行操作
}
}
```
这样,你就可以在Activity中使用Fragment中的Button和TextView了。
阅读全文