• Android入门篇2-activity调用跟数据传递


    一.activity调用

    假设ActivityTest调用SecondActivity

    1.显示调用

    button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String data = "Hello SecondActivitydfdsf";
            Intent intent = new Intent(ActivityTest.this, SecondActivity.class);
            intent.putExtra("extra_data", data);
            startActivity(intent);
        }
    });

    2.隐式调用

    (1)AndroidManifest.xml 中通过action跟category来固定SecondActivity

            <activity android:name=".SecondActivity" >
                <intent-filter>
                    <action android:name="com.example.ActivityTest.ACTION_START" />
                    <category android:name="android.intent.category.DEFAULT" />
                    <category android:name="com.example.ActivityTest.MY_CATEGORY"/>
                </intent-filter>
            </activity>

    (2)ActivityTest调用

    button1.setOnClickListener(new OnClickListener() {
            @Override
    public void onClick(View v) {
      Intent intent = new Intent("com.example.activitytest.ACTION_START"); 
      intent.addCategory("com.example.activitytest.MY_CATEGORY");
      startActivity(intent);   }
    });

    3.调用系统服务

    button1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setData(Uri.parse("http://www.baidu.com"));
                startActivity(intent);
    } });

    二.activity之间通过intent传值

    1.向下一个活动传递数据

    ActivityTest---(value)-->SecondActivity

    ActivityTest:

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_activity_test);
            Button button1 = (Button) findViewById(R.id.button_1);
            button1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String data = "Hello SecondActivitydfdsf";
                    Intent intent = new Intent(ActivityTest.this, SecondActivity.class);
                    intent.putExtra("extra_data", data);
                    startActivity(intent);
                }
            });
        }

    SecondActivity:

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView(R.layout.second_layout);
            Button button2 = (Button) findViewById(R.id.button_2);
            button2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = getIntent();
                    String data = intent.getStringExtra("extra_data");
                    Toast.makeText(SecondActivity.this, data, Toast.LENGTH_SHORT).show();
                    Log.d("SecondActivity", data);
                }
            });
        }
    }

    2.向上一个活动返回数据

    SecondActivity---(value)-->ActivityTest

    SecondActivity:

            button2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent();
                    intent.putExtra("data_return", "Hello FirstActivity");
                    setResult(RESULT_OK, intent);
                }
            });

    返回resultcode跟intent对象

    ActivityTest:

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_activity_test);
            Button button1 = (Button) findViewById(R.id.button_1);
            button1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(ActivityTest.this, SecondActivity.class);
                    startActivityForResult(intent, 1);
                }
            });
        }

    调用过程如下:

    startActivityForResult--->SecondActivity -->onActivityResult .

        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            switch (requestCode) {
                case 1:
                    if (resultCode == RESULT_OK) {
                        String returnedData = data.getStringExtra("data_return");
                        Log.d("ActivityTest", returnedData);
                    }
                    break;
                default:
            }
        }
  • 相关阅读:
    <把时间当做朋友>读书笔记
    C语言-第12课
    C语言-第13课
    C语言-第11课
    python-第三课-字符串详解
    C语言-第10课
    C语言-第9课
    C语言-第8课
    C语言-第7课-enum和typedef分析
    C语言-第6课
  • 原文地址:https://www.cnblogs.com/alexkn/p/5143887.html
Copyright © 2020-2023  润新知