我很难将数据从片段返回到活动。
我有活动A:是添加产品的主要活动,当用户单击文本视图(selectCategory)时,该活动向用户活动B显示内容片段Bb(所有类别的类别)的用户活动,当用户单击某些类别时,该应用程序将显示具有片段Cc(子类别)的用户活动C。
这是我的问题:当用户单击此子类别中的某些内容时,我需要片段Cc中的内容以将数据返回给活动A,然后向用户显示。
一个电话-> B
categoryTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i= new Intent(A.this,B.class);
i.putExtra("fragmenttype","CategoryFragment");
startActivityForResult(i,10);
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 10) {
if (resultCode == RESULT_OK) {
titleProduct.setText(data.getStringExtra("nodecategory"));
}
}
}
从Cc片段返回数据到A,但是什么也没发生(我需要从代码转到活动A来捕获数据onActivityResult
):
@Override
public void onClick(TreeNode node, Object value) {
Intent i = new Intent();
i.putExtra("nodecategory","hi");
getActivity().setResult(Activity.RESULT_OK, i);
getActivity().finish();
}
我倾向于严重依赖EventBus处理像您这样的情况。使用EventBus使我们的生活更简单。我们不需要在这里和那里的界面上弄乱我们的代码。
A ---> B
首先,A将以以下方式启动B:
Intent i= new Intent(A.this, B.class);
i.putExtra("fragmenttype","CategoryFragment");
startActivity((i); // No need using startActivityForResult,
// instead receive it from Event generated by B.class.
然后在B中,每当A需要捕获某些东西时,发送Event:
EventBus.getDefault().post(new MyEvent("passed_data"));
// You can finish B activity if its job finished.
finish();
与MyEvent类类似:
public class MyEvent {
private String data;
public MyEvent(String data) {
this.data = data;
}
public String getData() {
return data;
}
}
在A中,接收事件:
@Subscribe
public void onEventMessage(MyEvent event) {
// process event here
mTextView.setText(event.getData);
}
对于C-> A
考虑我们有展示C活动。每当我们想要通知A基于C活动需要做的事情(我们要做的事情)时,我们只需要使用数据触发Event:
EventBus.getDefault().post(new DataFromCEvent("your_c_data"));
与DataFromCEvent类似:
public class DataFromCEvent {
private String data;
public DataFromCEvent(String data) {
this.data = data;
}
public String getData() {
return data;
}
}
在A中,您可以通过添加以下内容来接收它:
@Subscribe
public void onEventMessage(DataFromCEvent event) {
// process event here
mTextView.setText(event.getData);
}
这也适用于片段。我们只需要为其他活动中需要的某些更改触发一个事件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句