zoukankan      html  css  js  c++  java
  • 论StartActivityForResult的返回结果

    package com.xtu.resulttest;

    import android.content.Intent;
    import android.os.Bundle;
    import android.support.v4.app.FragmentActivity;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.app.FragmentTransaction;

    public class MainActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    FragmentManager manager = getSupportFragmentManager();
    FragmentTransaction transaction = manager.beginTransaction();
    transaction.replace(R.id.id_framelayout, new TestFragment()).commit();
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    System.out.println("这里是activity的结果返回值。。。");
    super.onActivityResult(requestCode, resultCode, data);
    }
    }

    package com.xtu.resulttest;
    import android.app.Activity;
    import android.content.Intent;
    import android.net.Uri;
    import android.os.Bundle;
    import android.provider.Settings;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;

    public class TestFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    Intent intent = new Intent(Settings.ACTION_BLUETOOTH_SETTINGS);
    startActivityForResult(intent,222);
    return inflater.inflate(R.layout.fragment_test, container, false);
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
    System.out.println("这是在fragment返回的数据");
    super.onActivityResult(requestCode, resultCode, data);
    }
    }

    结果的返回值为:

    04-06 11:00:53.222 4924-4924/com.xtu.resulttest I/System.out: 这里是activity的结果返回值。。。
    04-06 11:00:53.222 4924-4924/com.xtu.resulttest I/System.out: 这是在fragment返回的数据

    但如果将上面的红色字 改为: getActivity().startActivityForResult()之后,返回结果如下:

    04-06 11:00:53.222 4924-4924/com.xtu.resulttest I/System.out: 这里是activity的结果返回值。。。

    由以上的测试可知,当由activity发出startActivityForResult的指令后,结果必然只是返回到activity的OnActivityResult方法中。

    由碎片(fragment)直接发出的startActicityForResult的指令后,结果首先经过包裹它的Activity中的OnActivityResult方法,然后才是对应的Fragment中的

      OnActivityResult方法。

  • 相关阅读:
    博客园
    未释放的已删除文件
    ssh连接缓慢
    剑指 Offer 38. 字符串的排列
    剑指 Offer 37. 序列化二叉树
    剑指 Offer 50. 第一个只出现一次的字符
    剑指 Offer 36. 二叉搜索树与双向链表
    剑指 Offer 35. 复杂链表的复制
    剑指 Offer 34. 二叉树中和为某一值的路径
    剑指 Offer 33. 二叉搜索树的后序遍历序列
  • 原文地址:https://www.cnblogs.com/android-er/p/5358459.html
Copyright © 2011-2022 走看看