Intent intent=new Intent();
intent.setClass(MainActivity.this, SecondActivity.class);
MainActivity.this.startActivity(intent);
而另一种是打开一个特定的Activity取得数据之后,返回给主界面的Activity;因为可能在复杂的主界面中,如果再来操作一些数据,可能显得更烦琐。
操作的基本步骤:1.主界面调用startActivityForResult(Intent intent,int requestCode)启动特定的Activity;其中第二个参数requestCode表示特定的请求码
2.在特定的Activity中得到数据后将数据放入主界面对应的Intent中
3.设置当前Activity的结果码
5.关闭当前的Activity,返回主界面;在主界面会触发(int requestCode, int resultCode, Intent data)方法;参数分别在 请求码,结果码,取得的数据
6.主界面根据请求码和结果码来判断是否在特定的Activity取得的数据
实例
MainActivity.java
package com.example.startactivityforresulttest;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
Button bt1;
EditText ed1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt1 = (Button) findViewById(R.id.bt1);
ed1 = (EditText) findViewById(R.id.ed1);
bt1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent=new Intent(MainActivity.this,CitysActivity.class);
//启动CitysActivity 请求码为0
startActivityForResult(intent, 0);
}
});
}
// 回调的方式来获取指定Activity返回的结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==0&&resultCode==0){
Bundle bundle=data.getBundleExtra("name");
ed1.setText(bundle.getString("name")+"--"+bundle.getString("names"));
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
CitysActivity.java
package com.example.startactivityforresulttest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.SimpleExpandableListAdapter;
import android.widget.TextView;
public class CitysActivity extends Activity {
ExpandableListView exp1;
String[] city = { "上海", "湖南" };
String[][] citys = { { "普陀区", "浦东新区", "长宁区" }, { "益阳市", "衡阳市", "岳阳市" } };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_city);
exp1 = (ExpandableListView) findViewById(R.id.exp1);
// 定义父列表项
List<Map<String, String>> parentlist = new ArrayList<Map<String, String>>();
// 定义子列表项
List<List<Map<String, String>>> chlilist = new ArrayList<List<Map<String, String>>>();
for (int i = 0; i < city.length; i++) {
// 添加父列表向数据
Map<String, String> map = new HashMap<String, String>();
map.put("pnames", city[i]);
parentlist.add(map);
List<Map<String, String>> parentlists = new ArrayList<Map<String, String>>();
for (int j = 0; j < citys[i].length; j++) {
// 添加子列表项
Map<String, String> maps = new HashMap<String, String>();
maps.put("names", citys[i][j]);
parentlists.add(maps);
}
chlilist.add(parentlists);
}
final SimpleExpandableListAdapter simple = new SimpleExpandableListAdapter(
this, parentlist, R.layout.parantcity,
new String[] { "pnames" }, new int[] { R.id.pa1 }, chlilist,
R.layout.chicity, new String[] { "names" },
new int[] { R.id.pa2 });
exp1.setAdapter(simple);
exp1.setOnChildClickListener(new OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
//获取选中的值
String cityO=simple.getGroup(groupPosition).toString();
String cityP=simple.getChild(groupPosition, childPosition).toString();
String []city=cityO.substring(1, cityO.length()-1).split("=");
String []citys=cityP.substring(1, cityO.length()-1).split("=");
//将数据放入Bundle对象中
Bundle bundle=new Bundle();
bundle.putString("name", city[1]);
bundle.putString("names", citys[1]);
// 获取启动该Activity之前的Activity对应的Intent
Intent intent=CitysActivity.this.getIntent();
intent.putExtra("name", bundle);
//设置当前Activity的结果码
CitysActivity.this.setResult(0, intent);
//关闭当前的Activity
CitysActivity.this.finish();
return false;
}
});
}
}
activity_city.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" >
<ExpandableListView
android:id="@+id/exp1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ExpandableListView>
</LinearLayout>
activity_main.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"
tools:context=".MainActivity" >
<Button
android:id="@+id/bt1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/city"/>
<EditText
android:id="@+id/ed1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/bt1"
android:layout_alignParentRight="true"/>
</RelativeLayout>