Intent带返回值显示跳转

本篇有知识点AlertDialog对话框,有Handler消息机制

1,获取当前计算机时间毫秒:System.currentTimeMillis()

2,跳转请求是startActivityForResult(intent, 1);//第一个是intent对象,第二个是请求码

3,返回值是 setResult(2,intent); //第一个是返回码,第二个是intent对象

4,处理请求和返回的方法onActivityResult(int requestCode, int resultCode, Intent data)//第一个为请求码,第二个为返回码,第三个是返回的intent对像的数据

需要注意的地方:

1,Intent跳转如果携带数据,那么接收方法一定是intent().getIntent().getxxx

2,Intent跳转携带的数据支持所以基本数据类型和所以实现了Serializable接口的数据

3,显示跳转是本类this,跳转类.class

4,带返回值跳转完记得销毁页面  finish()

5,所有的耗时操作在消息机制里执行

6,切记接收参数的时候,如果官方没有给intent对象一定用getIntent之后在getStringExtra,如果给出intent对象直接intent.getStringExtra

偶然发现在返回的方法里onActivityResult里接收基本数据类型失败int ss = data.getIntArrayExtra("wan",0);。不想麻烦用Bulde的。

就声明一个数组  ----int[] ss = data.getIntArrayExtra("wan");这样就可以了

代码如下:

首页Activity

<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:background="@drawable/fdfsa"
    tools:context=".MainActivity" >
	
    <EditText 
        android:id="@+id/main_et"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:numeric="integer"
        android:singleLine="true"
        />
    
    <Button 
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="点击获取"
       android:onClick="send"
       android:layout_below="@+id/main_et"
        />
    <TextView 
        android:id="@+id/main_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="50sp"
        android:textColor="#f00"
        android:layout_centerInParent="true"
        android:textStyle="bold"
        />
</RelativeLayout>

2,逻辑MainActivi

package com.example.intentdemo01;

import java.io.Serializable;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity  {

	private TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv = (TextView) findViewById(R.id.main_tv);
        
    }
    public void send(View v){
    	EditText et = (EditText) findViewById(R.id.main_et);
    	String str = et.getText().toString().trim();
    	if (TextUtils.isEmpty(str)) {
			Toast.makeText(this, "内容不能为空", 1).show();
			return;
		}
    	long aa = Long.valueOf(str);
    	if (aa==0) {
//			弹出对话框
    		AlertDialog.Builder alert = new AlertDialog.Builder(this);
    		alert.setTitle("标题");
//    		图标
    		alert.setIcon(R.drawable.tabbar_home_highlighted);
    		alert.setMessage("提示信息,输入不能为0");
//    		注意要倒的包不是view
    		alert.setPositiveButton("确定", new DialogInterface.OnClickListener() {
				
				@Override
				public void onClick(DialogInterface dialog, int which) {
					Toast.makeText(MainActivity.this, "你点击了确定", 0).show();
					
				}
			});
    		alert.setNegativeButton("取消", new DialogInterface.OnClickListener() {
				
				@Override
				public void onClick(DialogInterface dialog, int which) {
					// TODO Auto-generated method stub
					Toast.makeText(MainActivity.this, "取消被你点击了", 0).show();
				}
			});
//    		show一下
    		alert.show();
    		
		}
//    	当点击按钮时跳转
    	Intent intent = new Intent();
    	intent.setClass(MainActivity.this, Miao.class);
    	intent.putExtra("key", aa);
    	Log.i("gxx", aa+"");
//    	带返回值的跳转第一个是intent对象,第二个是请求标记
    	startActivityForResult(intent, 1);
//    	销毁该页面
//    	finish();
    	
    }
//    接收返回的参数
    	@Override
    	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    		super.onActivityResult(requestCode, resultCode, data);
//    		第一个请求码,第二个返回码,第三个intent数据
    		if (requestCode==1&&resultCode==2) {
//    			注意这里接收基本数据类型失败,这样写也可以
				int[] ss = data.getIntArrayExtra("wan");
				tv.setText("1970.1.1的零点开始到您指定时间是"+ss[0]+"秒");
			}
    		
    	}
}

3,要跳转的Activity

package com.example.intentdemo01;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;

public class Miao extends Activity {

	private TextView tv;
	private Handler handle = new Handler(){
		public void handleMessage(android.os.Message msg) {
//			更新UI
			switch (msg.what) {
			case 1:
				int a = msg.arg1;
				tv.setText(a+"");
				break;
			
			}
		}
	};
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
//		加载这个布局
		setContentView(R.layout.main_miao);
		tv = (TextView) findViewById(R.id.meiID);
		initresult();
	}
//	处理请求并且返回
	private void initresult() {
		Thread t = new Thread(){
			@Override
			public void run() {
				
				Intent intent = getIntent();
				long dangqian = intent.getLongExtra("key", 0);
				Log.i("gxx", dangqian+"dangqian");
//					暂停几秒跳转
				int a=10;
				
				while (a>=0) {
					Log.i("gxx", "小BUG到此一游");
					try {
						Thread.sleep(1000);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					a--;
					
						Message msg = handle.obtainMessage();
						msg.arg1 = a;
						msg.what = 1;
						handle.sendMessage(msg);
					
					
				}
				
				
//				未来的时间
//				long weilai = dangqian+System.currentTimeMillis();
//				时间差
//				int  cha = (int) (weilai-System.currentTimeMillis());
//				1000毫秒为1秒,转换成秒
				int aaa = (int) (dangqian+System.currentTimeMillis());
				int[] b = new int[5];
//				输入时间差
				b[0] = aaa/1000;
				
				
					intent.putExtra("wan", b);
//					返回标记为2
					setResult(2,intent);
//					销毁页面
					finish();
			}
		};
		t.start();
		
	}
	
	
	
	
	
}

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:id="@+id/meiID"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       	android:gravity="center"
       	android:textSize="50sp"
        />

</LinearLayout>


你可能感兴趣的:(Intent带返回值显示跳转)