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方法。

  • 相关阅读:
    几个新角色:数据科学家、数据分析师、数据(算法)工程师
    人类投资经理再也无法击败电脑的时代终将到来了...
    Action Results in Web API 2
    Multiple actions were found that match the request in Web Api
    Routing in ASP.NET Web API
    how to create an asp.net web api project in visual studio 2017
    网站漏洞扫描工具
    How does asp.net web api work?
    asp.net web api history and how does it work?
    What is the difference between a web API and a web service?
  • 原文地址:https://www.cnblogs.com/android-er/p/5358459.html
Copyright © 2011-2022 走看看