通过微调器从片段到活动的所选项目
问题描述:
不理解完整片段的生命周期。通过微调器从片段到活动的所选项目
案例:
点击
FrameLayout
从Activity
移动到Fragment
工作。
问题:
在
Fragment
有两个spinners
和一个SubmitButton
,选择既spinner
值时,的SubmitButton
的点击,应该从喷丝显示这些值返回到。但是,我无法做到这一点。
我的解决方案:
我试图用
Intent
,putExtras
然后getExtras
,但我们是在Fragment
,Intent
是不会为Fragment
工作。Bundle
也没有帮助。
P.S.需要了解Fragment良好生命周期的人。阅读从stackoverflow和其他教程很多帖子。没有找到我的意思。
不想外部库这样eventBus
答
两种方法可以做到这一点
1)铸造getActivity()为您的活动,并呼吁具体方法,并传递参数。
public class MyActivity extends AppCompatActivity {
public void setData(String value){
// do whatever with the data
}
}
public class MyFragment extends Fragment{
public void someMethod(){
((MyActivity)getActivity).setData(your_data);
}
}
2)创建接口并将该值传递给活性。
public class MyActivity extends AppCompatActivity implements SpinnerListener{
@Override
public void onSpinnerItemSelected(String value){
// do whatever with the data
}
public interface SpinnerListener {
void onSpinnerItemSelected(String value);
}
}
public class MyFragment extends Fragment {
private SpinnerListener spinnerListener;
@Override
public void onAttach(Context context) {
super.onAttach(context);
if(context instanceOf MyActivity)
spinnerListener = ((MyActivity)context);
}
public void someMethod() {
if(spinnerListener != null)
spinnerListener.onSpinnerItemSelected(your_data);
}
}
注意:安全方法是使用接口。
写入接口来传递值 –
当你在一个片段中,你可以使用回调,或者使用getActivity()或getContext()获得对Activity的引用,并将值传回给调用特定的方法活动 – MatPag
从'android studio'创建'Fragment',你会看到一个接口示例,你可以使用它将数据发送到活动。右键单击包新 - >片段 –