我有一个活动,我有一个按钮来点击API。我在该活动中还有一个框架布局,我正在显示一个片段。我在片段中的createView()上有片段的一些数据,我想将这些数据发送到活动任何事件处理(我知道接口方法,但我没有片段中的任何按钮)。现在我想将片段数据带到活动的按钮单击。这可能吗 ? 请给我一个解释。
class ForgetPass extends Activity {
LinearLayout sendOtp;
ProgressBar progress_bar;
TextView send_otp;
FragmentManager fm = getFragmentManager();
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.forget_pass);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// get the data from the fragment
}
});
}
这是我的片段,它只有textViews,没有任何按钮可以实现接口并将数据发送到活动。
class EnterPhone extends Fragment {
EditText mobile;
RequestQueue requestQueue;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.enter_phone, container, false);
//Hit api and only textviews for showing information and need this on activity. On a button click which is itself in activity
return view;
}
}
答案 0 :(得分:0)
如果我现在必须实施它,我会使用Architecture Components与活动和片段共同ViewModel
。在Share data between fragments
中有更好的解释,但基本的想法是获取ViewModel
的{{1}}:
Activity
现在您拥有了通用视图模型,该活动可以触发模型中的操作,并且片段可以从模型接收数据更新。反过来说。例如:
// in your fragment:
model = ViewModelProviders.of(getActivity())
// in your activity:
model = ViewModelProviders.of(this)
答案 1 :(得分:0)
您可以通过多种方式发送数据。
使用活动总线。来自任何地方的火灾数据随处可见。
https://github.com/greenrobot/EventBus
但是对于您的条件适用性,请使用最适合的ViewModel Android架构模式。