从活动的Android返回值片段 [英] return value to fragment from activity android
问题描述
我有片段(F),它调用活动(A)。在活动按钮(B)的preSS(A)的活动必须返回所选择的ArrayList的值回片段(F)和完成活动(A)...这可能吗?
我自Activity知道你可以故意为发送数据:
捆绑包=新包();
bundle.putString(键,值);
//设置Fragmentclass参数
Fragmentclass fragmentobj =新Fragmentclass();
fragmentobj.setArguments(包);
在片段onCreateView方式:
@覆盖
公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
捆绑savedInstanceState){
。字符串strText的= getArguments()的getString(钥匙);
返回inflater.inflate(R.layout.fragment,集装箱,FALSE);
}
但这个工程的调用不一样的片段工作的新片段。
我的问题:是否有可能被称为活动的返回值呼叫者片段
? 公共类HomeFragment扩展片段{
按钮附件;
字符串strText的=检查;
@覆盖
公共无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
setHasOptionsMenu(真);
} @覆盖
公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
捆绑savedInstanceState){
查看rootView = inflater.inflate(R.layout.home_fragment,NULL);
附件=(按钮)rootView
.findViewById(R.id.btn_activity);
Toast.makeText(getActivity(),
键=+ strText的,
Toast.LENGTH_LONG).show();
attachment.setOnClickListener(新OnClickListener(){ @覆盖
公共无效的onClick(查看为arg0){
// TODO自动生成方法存根 意图myIntent =新意图(getActivity(),AndroidCustomGalleryActivity.class);
。getActivity()startActivityForResult(myIntent,999); }
}); 返回rootView; } 公共无效的onActivityResult(INT申请code,INT结果code,意图数据){ 如果(要求code == 999){
strText的= getArguments()的getString(密钥)。 Toast.makeText(getActivity(),
键=+ strText的,
Toast.LENGTH_LONG).show();
}
}
}
在一个activity
捆绑包=新包();
bundle.putString(键,值);
HomeFragment fragmentobj =新HomeFragment();
fragmentobj.setArguments(包);
完();
在你的片段(F)调用startActivityForResult()方法来启动该活动A,然后覆盖的onActivityResult()方法中的片段。
所以,当活动A完成,你可以得到得到的结果摞的onActivityResult()方法。
修改
在您的片段的onClick()调用类似这样的活动
意图myIintent =新意图(getActivity(),AndroidCustomGalleryActivity.class);
startActivityForResult(myIintent,999);
而在你的活动
意向意图= getIntent();
束束=新包();
bundle.putString(键,值);
intent.putExtras(包);
的setResult(RESULT_OK,意向);
完();
现在你会得到的onActivityResult()的结果片段的方法。
EDIT2
在您的片段的onActivityResult()方法,你必须得到这样的数据...
捆绑额外= data.getExtras();
strText的= extras.getString(钥匙);
I have Fragment(F) which calls the activity(A). On press of button(B) in activity(A) the activity must return selected arraylist value back to fragment(F) and finish activity(A)... is this possible?
I know from Activity you can send data with intent as:
Bundle bundle = new Bundle();
bundle.putString("key", "value");
// set Fragmentclass Arguments
Fragmentclass fragmentobj = new Fragmentclass();
fragmentobj.setArguments(bundle);
in Fragment onCreateView method:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
String strtext = getArguments().getString("key");
return inflater.inflate(R.layout.fragment, container, false);
}
but this works for calling new fragment not working with same fragment.
My question: is it possible for called Activity to return value to caller fragment?
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();
}
}
}
In Called Activity
Bundle bundle = new Bundle();
bundle.putString("key", "value");
HomeFragment fragmentobj = new HomeFragment();
fragmentobj.setArguments(bundle);
finish();
In your fragment(F) call the startActivityForResult() method to start the activity A, then override onActivityResult() method in the fragment.
So when the activity A finishes you can get get the result bundle in onActivityResult() method.
EDIT
In your fragment onClick() call the activity like this
Intent myIintent=new Intent(getActivity(), AndroidCustomGalleryActivity.class);
startActivityForResult(myIintent, 999);
And in your activity
Intent intent = getIntent();
Bundle bundle = new Bundle();
bundle.putString("key", "value");
intent.putExtras(bundle);
setResult(RESULT_OK, intent);
finish();
Now you will get the result in onActivityResult() method of the fragment.
EDIT2
In your fragment onActivityResult() method you have to get the data like this...
Bundle extras = data.getExtras();
strtext = extras.getString("key");
这篇关于从活动的Android返回值片段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!