从活动的Andr​​oid返回值片段 [英] return value to fragment from activity android

查看:172
本文介绍了从活动的Andr​​oid返回值片段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有片段(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");

这篇关于从活动的Andr​​oid返回值片段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆