【问题标题】:Android fragment onActivityResultAndroid 片段 onActivityResult
【发布时间】:2015-02-21 05:02:19
【问题描述】:

编辑

看来我需要打电话给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 吗?不知道有什么帮助会很好

谢谢

【问题讨论】:

  • 你想在 DietActivity 中获取数据吗?
  • 嗨,我已经得到了DietActivity类中的数据,这个类只显示信息,现在在使用查看信息后的饮食活动,并且在我想替换的活动上调用Finish()调用这个意图的片段,这实际上是另一个主类的一部分

标签: android android-intent android-fragments onactivityresult


【解决方案1】:

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

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

编辑: 要将数据发送到新片段,您可以在片段中使用静态工厂来接收新实例,如下所示:

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

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

【讨论】:

  • 嗨,我想你就在这里,我已经编辑了我的问题,所以我使用 startActivityForResults 开始这个新活动,然后当活动完成后发回结果时,我想替换片段但仍然将一些信息传递给那个新片段是可能的吗?
  • 是的,当然。为您的片段使用静态构建器,并以捆绑的形式或使用参数将数据传递给它。
猜你喜欢
  • 2019-01-23
  • 2014-09-02
  • 2014-07-25
  • 2013-12-01
  • 1970-01-01
  • 2013-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多