赞
踩
1.Intent的作用
2.显式意图用法
显示意图基本用在调用本应用页面,代码比较简单。
1. 基本页面跳转
创建两个activity,分别为MainActivity和MainActivity,在清单文件中配置,用开发工具直接创建activity会自动配置。
在MainActivity的布局文件中添加一个按钮并在MainActivity类中添加点击事件,代码如下
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.zl.itgeek.intentdemo.MainActivity">
<Button
android:id="@+id/bt_1"
android:layout_width="match_parent"
android:text="@string/toPage2"
android:layout_height="wrap_content" />
</LinearLayout>
然后再MainActivity.java 中为按钮添加点击事件
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
Button bt_1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt_1 = (Button) findViewById(R.id.bt_1);
bt_1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent);
}
});
}
}
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
中传入的第一个参数为一个Context对象,第二个参数为要跳转的activity的class对象。
然后通过startActivity(intent);方法跳转到下一个页面。
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
intent.putExtra("username","zhangsan");
intent.putExtra("age",20);
startActivity(intent);
}
然后在另一个页面中获取,方法如下
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Intent intent = getIntent();
String username = intent.getStringExtra("username");
int age = intent.getIntExtra("age");
}
MainActivity,java
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
Button bt_1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt_1 = (Button) findViewById(R.id.bt_1);
bt_1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
startActivityForResult(intent,150);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==150){
String username = data.getStringExtra("username");
String password = data.getStringExtra("password");
}
}
}
Main2Activity.java
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class Main2Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
//该代码本应写在事件中,比如按钮点击事件。为了方便起见直接写在onCreat中,实际开发按情况写在相应位置
Intent intent = new Intent();
intent.putExtra("username","aaaaa");
intent.putExtra("password","bbbbb");
setResult(150,intent);
}
}
和上面的方法的不同之处在于跳转到下一个activity时用到的方法为startActivityForResult(intent,150); 其中第二个参数为发送码,用来标记是从哪个activity中跳转过来,可以自己写一个。
然后在第二个页面中创建Intent对象并把数据放进去。然后用setResult(150,intent);方法,当该页面关闭后跳转到上一个页面时会自动调用protected void onActivityResult(int requestCode, int resultCode, Intent data)
方法,第二个参数为上一个页面的返回码,用于确定是从哪个页面返回的。第三个参数是上一个页面中用于封装数据的intent对象,可以从中取到参数。
3.隐式意图用法
隐式意图通常用来实现不同应用的调用,比如一个应用调用另一个应用。
隐式意图需要被调用的activity在清单文件中配置一个意图过滤器。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.zl.itgeek.intentdemo">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- 为Main2Activity配置意图过滤器 -->
<activity android:name=".Main2Activity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="aaa"/>
<data android:host="192.168.0.1" android:path="/index" android:port="222"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
</application>
</manifest>
其中的
bt_1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_DEFAULT);
startActivity(intent);
}
});
如果有几个action都满足该意图则会弹出选择框。
那么到底哪些属性是需要的哪些是不需要的,又怎么匹配呢。它的匹配存在如下规则
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。