startActivity startActivityForResult

            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>





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值