一个android应用程序可以包含多个活动,当应用程序具有多个活动时,你可以从一个活动导航到另一个活动,在android中,活动之间的导航通过意图(Intent)来完成。
这里我通过一个例子来说明,我们通过一个activity的按键跳转到另一activity,然后输入信息,然后将输入的信息返回第一个activity。
首先我们建立一个工程,然后在src 下新建一个secondActivity.java
然后我们来修改AndroidMainfest.xml
添加一个activity 如下
<activity
android:label="SecondActivity"
android:name=".SecondActivity"
>
<intent-filter>
<action android:name="com.example.SecondActivity"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
这里说一下
添加的新活动的名称(类)是secondActivity.
新活动显示的标签名称是secondActivity.
新活动的意图筛选器的名称是com.example.SecondActivity,其他活动将通过这个名称来调用这个活动,理想情况下,你应该使用你公司的反向域名为意图筛选器命名的。
意图筛选器的类别是android.intent.category.DEFAULT
其作用是:如果自己定义的某个Activity要通过隐式启动,在AndroidManifast.xm那么必须加上android.intent.category.DEFAULT。
然后我们来给SecondActivity 添加一个secondlayout.XML布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:text="Please input your name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<EditText
android:id="@+id/Et_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Please input your name"
/>
<Button
android:id="@+id/btn_display"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Display"
/>
<TextView
android:id="@+id/Tv_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="This is the second XML"/>
</LinearLayout>
然后来写SecondActivity
package com.example.sendactivity;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class SecondActivity extends Activity {
private Button btn_show;
private TextView text_show;
private EditText In_text;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
text_show=(TextView) findViewById(R.id.Tv_text);
In_text=(EditText) findViewById(R.id.Et_text);
btn_show= (Button) findViewById(R.id.btn_display);
btn_show.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent data=new Intent();
text_show.setText( In_text.getText().toString());
data.setData(Uri.parse(In_text.getText().toString()));
setResult(RESULT_OK,data);
finish();
}
});
}
}
然后是mainlayout.xml 也就是该应用启动时的页面
<RelativeLayout 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=".MainActivity" >
<Button
android:id="@+id/btn_to"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="to second"/>
</RelativeLayout>
然后是mainActivity.java
说明一下: 要从一个活动中回传数据,应该是用startActivityForResult()方法。
package com.example.sendactivity;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
private static final OnClickListener MyOnclick = null;
private Button button2;
int reques_Code=1;
class MyOnclick implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//startActivity(new Intent("com.example.SecondActivity"));
startActivityForResult(new Intent("com.example.SecondActivity"), reques_Code );
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button2=(Button) findViewById(R.id.btn_to);
button2.setOnClickListener(new MyOnclick());
}
public void onActivityResult(int requestCode,int resultCode,Intent data){
if(requestCode==reques_Code){
if(resultCode==RESULT_OK){
Toast.makeText(this, data.getData().toString(), Toast.LENGTH_SHORT).show();
}
}
}
}
然后运行程序
点击按钮 调到下一个界面
点击按钮返回第一个界面 并显示输入的内容