Android学习随记2(Intent实现Activity跳转)

一、简单的活动间跳转

 btn1 = (Button)findViewById(R.id.first_btn1);
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               Intent intent = new Intent(FirstActivity.this,SecondActivit.class);
                startActivity(intent);

            }
        });

显式跳转-从FirstActivity跳转到SecondActivity,不传递其他任何信息。

二、隐式action方式跳转

目的活动中添加action条件 my.action,category设置可为默认DEFAULT

...
        <activity android:name=".SecondActivit">
            <intent-filter>
                <action android:name="my.action" /> 
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
...

源活动中设置Intent跳转期望响应的action,须与目的活动中设置的action一致。

        btn1 = (Button)findViewById(R.id.first_btn1);
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) { 
                Intent intent = new Intent("my.action"); 
                startActivity(intent);

            }
        });

三、活动间跳转时数据的传递

通过Intent 提供的接口函数putExtra以键值的方式传递,源活动代码如下:

      btn1 = (Button)findViewById(R.id.first_btn1);
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) { 
                Intent intent = new Intent("my.action");
                intent.putExtra("myTag","myValue");
                startActivity(intent);

            }
        });

此时,目的活动可通过接收到的Intent获取传递过来的数据,需保证的取值正确。

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Intent intent = getIntent();
        String str = intent.getStringExtra("myTag");
        Toast.makeText(this,str,Toast.LENGTH_SHORT).show();
    }

 四、Intent跳转到其他App

根据Intent.ACTION_XX不同,可跳转不同的action,如ACTION_VIEW ACTION_DIAL等。

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

假如对响应的action有更多的限制,可在源活动的filter进行设置data属性。

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" /> 
                <category android:name="android.intent.category.LAUNCHER" />
                <data android:scheme="http://"/>
            </intent-filter>
        </activity>

 

posted @ 2016-08-18 14:04  eCard  阅读(294)  评论(0编辑  收藏  举报