Android片段onActivityResult

时间:2015-02-21 05:02:20

标签: android android-intent android-fragments onactivityresult

修改

我似乎需要拨打startActivityForResult(intent, requestcode);

我会在我的主要父活动中做这样的事情:

public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
getActivity();
if(requestCode == 1 && resultCode == Activity.RESULT_OK) {
   //some code
}

然后像这样开始我的意图?还是不确定......

    Intent intent = new Intent(getActivity(), DietActivity.class);

    Bundle bundle = ActivityOptions.makeCustomAnimation(getActivity(), R.anim.left_slide_in, R.anim.left_slide_out).toBundle();
    intent.putExtra("id", dietid);
    intent.putExtra("duration", diet_duration);
    intent.putExtra("weightlost", total_weight_loss);
    intent.putExtra("followers", followers);
    intent.putExtra("rating", rating);
    intent.putExtra("dietname", dietname);
    intent.putExtra("dietdescription", dietdescription);
    intent.putExtra("dietcategory", dietcategory);

    startActivityForResult(intent, bundle, 1);

我有启动片段的主要活动,然后这个片段启动另一个临时活动,使用下面的代码显示一些信息:

    Intent intent = new Intent(getActivity(), DietActivity.class);

    Bundle bundle = ActivityOptions.makeCustomAnimation(getActivity(), R.anim.left_slide_in, R.anim.left_slide_out).toBundle();
    intent.putExtra("id", dietid);
    intent.putExtra("duration", diet_duration);
    intent.putExtra("weightlost", total_weight_loss);
    intent.putExtra("followers", followers);
    intent.putExtra("rating", rating);
    intent.putExtra("dietname", dietname);
    intent.putExtra("dietdescription", dietdescription);
    intent.putExtra("dietcategory", dietcategory);

    getActivity().startActivity(intent, bundle);

当我在这个新活动上调用finish()时,会显示之前可见的相同片段,我想在启动的活动完成时将此片段更改为另一个片段,但我想提供一些额外的信息,如图所示在新片段上,我在这里使用onActivityResutls吗?不确定任何帮助会很棒

由于

1 个答案:

答案 0 :(得分:0)

是的,使用OnActivityResult是一种方法。 您可以在调用者活动或调用者片段中覆盖它。如果您只想进行片段事务或与活动相关的任何其他工作,请覆盖您活动中的onActivityResult。另请注意,您应使用startActivityForResult指定请求代码,以便您可以处理该请求代码的结果。

如果您只想更新片段中的数据或只是在那里处理数据,您也可以在片段中覆盖它。

编辑: 要将数据发送到新片段,您可以使用片段中的静态工厂来接收这样的新实例:

public static MyFragment newInstance(Bundle args){
    MyFragment f = new MyFragment();
    f.setArguments(args);
    return f;
}

使用MyFragment.newInstance();实例化您的片段 然后要使用这些参数,在您的示例onCreate片段方法中,您可以使用getArguments()方法访问您提供的包。