Intent用法实例:
1.无参数Activity跳转
Intent it = new Intent(Activity.Main.this, Activity2.class);
startActivity(it);
2.向下一个Activity传递数据(使用Bundle和Intent.putExtras)
Intent it = new Intent(Activity.Main.this, Activity2.class);
Bundle bundle=new Bundle();
bundle.putString("name", "This is from MainActivity!");
it.putExtras(bundle); // it.putExtra(“test”, "shuju”);
startActivityForResult(intent, 0);
对于数据的获取可以采用:
Bundle bundle = getIntent().getExtras();
String name = bundle.getString("name");
AndroidManifest.xml配置文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="iaiai.test" android:versionCode="1" android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MyList" android:label="@string/contact_title">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".TestWidget" android:label="@string/contact_title"></activity>
</application>
<uses-permission android:name="android.permission.READ_CONTACTS" />
<!-- 在SD卡中创建文件与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<!-- 往SD卡中写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>
[color=red]*此文件要注意一个地方就是写的所有Activity类必须要在此配置文件中配置activity,如果不配置则跳转会报错。[/color]
main.xml布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText android:id="@+id/et" android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<Button android:id="@+id/bt" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/btn_next"></Button>
</LinearLayout>
list_items.xml布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:id="@+id/myListItem">
<EditText android:id="@+id/et1" android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<Button android:id="@+id/bt1" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/btn_return"></Button>
</LinearLayout>
values/strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, TestListView!</string>
<string name="app_name">TestListView</string>
<string name="contact_title">Contact</string>
<string name="btn_next">Next</string>
<string name="btn_return">Prev</string>
</resources>
values-zh-rCN/strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, TestListView!</string>
<string name="app_name">TestListView</string>
<string name="contact_title">联系人</string>
<string name="btn_next">下一步</string>
<string name="btn_return">返回</string>
</resources>
MyList.java类:
package iaiai.test;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MyList extends Activity {
private EditText editView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
editView = (EditText) findViewById(R.id.et);
Button bt = (Button) findViewById(R.id.bt);
bt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MyList.this, TestWidget.class);
Bundle bundle = new Bundle();
bundle.putString("text", editView.getText().toString());
intent.putExtras(bundle);
startActivityForResult(intent, 0);
// finish(); //这句意思是关闭当前Activity,也就是说点返回键返回不到这个Activity了.
}
});
}
/**
* 取到回传的值
*/
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (resultCode) { // resultCode为回传的标记,我在B中回传的是RESULT_OK
case RESULT_OK:
Bundle b = data.getExtras(); // data为B中回传的Intent
editView.setText(b.getString("text"));// 回传的值
break;
default:
break;
}
}
}
TestWidget.java类:
package iaiai.test;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class TestWidget extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_items);
Bundle bundle = getIntent().getExtras();
final EditText editView = (EditText) findViewById(R.id.et1);
editView.setText(bundle.getString("text"));
Button bt = (Button) findViewById(R.id.bt1);
bt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(TestWidget.this, MyList.class);
Bundle bundle = new Bundle();
bundle.putString("text", editView.getText().toString());
intent.putExtras(bundle);
setResult(RESULT_OK, intent);
finish(); // 这句意思是关闭当前Activity,也就是说点返回键返回不到这个Activity了.
}
});
}
}
以下是运行结果:
[img]http://dl.iteye.com/upload/attachment/491020/d2cf9b7f-6c9e-33cb-9eab-a1bf3fb2165d.jpg[/img]
[img]http://dl.iteye.com/upload/attachment/491022/db8498f3-dd18-33c6-9456-c76c0b99225d.jpg[/img]
[img]http://dl.iteye.com/upload/attachment/491024/0f85887b-ff8b-372a-95c4-7796bafc023c.jpg[/img]