我有片段(F)调用活动(A)。按下活动(A)中的按钮(B),活动必须将选定的arraylist值返回到片段(F)并完成活动(A)......这可能吗?
我知道您可以在Activity中发送意图数据:
Bundle bundle = new Bundle();
bundle.putString("key", "value");
// set Fragmentclass Arguments
Fragmentclass fragmentobj = new Fragmentclass();
fragmentobj.setArguments(bundle);
在Fragment onCreateView方法中:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
String strtext = getArguments().getString("key");
return inflater.inflate(R.layout.fragment, container, false);
}
但这适用于调用不使用相同片段的新片段。
我的问题:调用Activity是否可以将值返回给调用者片段?
public class HomeFragment extends Fragment{
Button attachment;
String strtext = "check";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.home_fragment, null);
attachment = (Button) rootView
.findViewById(R.id.btn_activity);
Toast.makeText(getActivity(),
"Key= " + strtext,
Toast.LENGTH_LONG).show();
attachment.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent myIntent = new Intent(getActivity(), AndroidCustomGalleryActivity.class);
getActivity().startActivityForResult(myIntent,999);
}
});
return rootView;
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == 999){
strtext = getArguments().getString("key");
Toast.makeText(getActivity(),
"Key= " + strtext,
Toast.LENGTH_LONG).show();
}
}
}
在被叫活动中
Bundle bundle = new Bundle();
bundle.putString("key", "value");
HomeFragment fragmentobj = new HomeFragment();
fragmentobj.setArguments(bundle);
finish();
答案 0 :(得分:1)
在你的片段(F)中调用startActivityForResult()方法来启动活动A,然后覆盖片段中的onActivityResult()方法。
因此,当活动A结束时,您可以在onActivityResult()方法中获取结果包。
修改强>
在你的片段onClick()中调用这样的活动
Intent myIintent=new Intent(getActivity(), AndroidCustomGalleryActivity.class);
startActivityForResult(myIintent, 999);
在你的活动中
Intent intent = getIntent();
Bundle bundle = new Bundle();
bundle.putString("key", "value");
intent.putExtras(bundle);
setResult(RESULT_OK, intent);
finish();
现在,您将获得片段的onActivityResult()方法的结果。
<强> EDIT2 强>
在你的片段onActivityResult()方法中,你必须得到像这样的数据......
Bundle extras = data.getExtras();
strtext = extras.getString("key");